栈队列的顺序链式储存结构数据结构试验报告.docx
- 文档编号:4024868
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:21
- 大小:136.20KB
栈队列的顺序链式储存结构数据结构试验报告.docx
《栈队列的顺序链式储存结构数据结构试验报告.docx》由会员分享,可在线阅读,更多相关《栈队列的顺序链式储存结构数据结构试验报告.docx(21页珍藏版)》请在冰豆网上搜索。
栈队列的顺序链式储存结构数据结构试验报告
数据结构实验报告
班级:
计
学号:
姓名:
设计日期:
西安计算机学院
实验题目
1)栈的顺序存储结构
2)栈的链式存储结构
3)队列的链式存储结构
4)队列的循环存储结构
2.需求分析
本演示程序用C语言编写,完成栈和列的初始化,入栈、出栈、输出操作。
1)对于顺序栈,入栈时要先判断栈是否满了,栈满不能入栈,否则出现空间溢出;在进栈出栈和读取栈顶时先判栈是否为空,为空时不能操作。
2)在一个链队表中需设定两个指针分别指向队列的头和尾。
3)队列的存储结构:
注意要判断队满和队空。
4)程序所能达到的功能:
完成栈的初始化,入栈,出栈和输出操作;完成队列的初始化,入队列,出队列和输出操作。
3.概要设计
本程序包含
1、栈的顺序存储结构包含的函数:
1)主函数main()
2)入栈函数Push()
3)出栈函数Pop()
2、栈的链式存储结构包含的函数:
1)主函数main()
2)入栈函数PushStack()
3)退栈函数PopStack()
4)取栈顶元素函数Getstacktop()
3、队列的链式存储结构所包含的函数:
1)主函数main()
2)入队函数EnQueue()
3)出队函数DeQueue()
4队列的循环所包含的函数:
1)主函数main()
2)初始化循环函数CircSeqQueue()
3)入队函数EnQueue()
4)出队函数DeQueue()
5)取队首元素函数GetFront()
4.详细设计
1)栈的顺序存储结构
#include
#include
#include
#defineMAXSIZE20
typedefintdatatype;
typedefstruct
{datatypeelem[MAXSIZE];
inttop;
}SeqStack;
intinit(SeqStack*s)
{s->top=-1;return1;}
voidprint(SeqStack*s)
{charch;inti;
if(s->top==-1)printf("\n栈已空.");
else{i=s->top;
while(i!
=-1){printf("\ndata=%d",s->elem[i]);i--;}
}
printf("\n按回车继续");ch=getch();
}
voidpush(SeqStack*s,datatypex)
{if(s->top==MAXSIZE-1)printf("\n栈已满!
");
elses->elem[++s->top]=x;
}
datatypepop(SeqStack*s)
{datatypex;
if(s->top==-1){printf("\n栈已空!
");x=-1;}
else{x=s->elem[s->top--];}
return(x);
}
voidmain()
{SeqStacks;intk;datatypex;
if(init(&s))
{do{printf("\n\n\n");
printf("\n***************************************");
printf("\n\n1.x进栈");
printf("\n\n2.出栈返回其值");
printf("\n\n3结束");
printf("\n***************************************");
printf("\n请选择(123)");
scanf("%d",&k);
switch(k)
{case1:
{printf("\n请输入进栈整数X=?
");scanf("%d",&x);
push(&s,x);print(&s);
}break;
case2:
{x=pop(&s);
printf("\n出栈元素:
%d",x);
print(&s);
}break;
case3:
exit(0);
}
printf("n---------");
}while(k>=1&&k<3);
printf("\n按回车返回");
getch();
}
else
printf("\n初始化失败!
\n");
}
2).栈的链式存储结构
#include
#include
typedefstructSNode
{
intdata;
structSNode*next;
}SNode,*LinkStack;
LinkStacktop;
LinkStackPushStack(LinkStacktop,intx)//入栈
{
LinkStacks;
s=(LinkStack)malloc(sizeof(SNode));
s->data=x;
s->next=top;
top=s;
returntop;
}
LinkStackPopStack(LinkStacktop)//退栈
{
LinkStackp;
if(top!
=NULL)
{
p=top;
top=top->next;
free(p);
printf("退栈已完成\n");
returntop;
}
else
printf("栈是空的,无法退栈!
\n");
return0;
}
intGetStackTop(LinkStacktop)//取栈顶元素
{
returntop->data;
}
boolIsEmpty()
{
returntop==NULL?
true:
false;
}
voidPrint()
{
SNode*p;
p=top;
if(IsEmpty())
{
printf("Thestackisempty!
\n");
return;
}
while(p)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
voidmain()
{
intx,a,b;
charm;
do
{
printf("\n");
printf("链栈的基本操作\n");
printf("\n");
printf("1.置空栈\n");
printf("2.进栈\n");
printf("3.退栈\n");
printf("4.取栈顶元素\n");
printf("5.退出程序\n");
printf("\n请选择一个数字(12345):
");
scanf("%c",&m);
switch(m)
{
case'1':
{
top=NULL;
printf("\n栈已置空!
");
break;
}
case'2':
{
printf("请输入要进栈的元素个数是:
");
scanf("%d",&a);
printf("\n请输入要进栈的%d个元素:
",a);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列 顺序 链式 储存 结构 数据结构 试验报告