栈-队列的顺序-链式储存结构(数据结构试验报告).doc
《栈-队列的顺序-链式储存结构(数据结构试验报告).doc》由会员分享,可在线阅读,更多相关《栈-队列的顺序-链式储存结构(数据结构试验报告).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数据结构实验报告班 级: 计 学 号: 姓 名: 设计日期: 西安计算机学院实验题目 1)栈的顺序存储结构 2)栈的链式存储结构 3)队列的链式存储结构 4)队列的循环存储结构2. 需求分析 本演示程序用C语言编写,完成栈和列的初始化,入栈、出栈、输出操作。1) 对于顺序栈,入栈时要先判断栈是否满了,栈满不能入栈,否则出现空间溢出;在进栈出栈和读取栈顶时先判栈是否为空,为空时不能操作。2) 在一个链队表中需设定两个指针分别指向队列的头和尾。3) 队列的存储结构:注意要判断队满和队空。4) 程序所能达到的功能:完成栈的初始化,入栈,出栈和输出操作;完成队列的初始化,入队列,出队列和输出操作。3
2、. 概要设计 本程序包含1、栈的顺序存储结构包含的函数:1) 主函数main()2) 入栈函数Push()3) 出栈函数Pop()2、栈的链式存储结构包含的函数:1) 主函数main()2) 入栈函数PushStack()3) 退栈函数PopStack()4) 取栈顶元素函数Getstack top()3、队列的链式存储结构所包含的函数:1) 主函数main()2) 入队函数EnQueue()3) 出队函数DeQueue()4 队列的循环所包含的函数:1) 主函数main()2) 初始化循环函数CircSeqQueue()3) 入队函数EnQueue()4) 出队函数DeQueue()5) 取
3、队首元素函数GetFront()4. 详细设计 1)栈的顺序存储结构#include#include#include#define MAXSIZE 20typedef int datatype;typedef struct datatype elemMAXSIZE; int top;SeqStack;int init(SeqStack *s) s-top=-1; return 1;void print(SeqStack *s)char ch; int i;if(s-top=-1)printf(n 栈已空.);elsei=s-top;while(i!=-1)printf(n data=%d,s-
4、elemi); i-;printf(n 按回车继续);ch=getch();void push(SeqStack *s,datatype x)if(s-top=MAXSIZE-1) printf(n 栈已满!);else s-elem+s-top=x;datatype pop(SeqStack*s)datatype x;if(s-top=-1)printf(n 栈已空! ); x=-1;elsex=s-elems-top-;return(x);void main()SeqStack s; int k; datatype x;if(init(&s)do printf(nnn); printf(n
5、*); printf(nn 1. x进栈); printf(nn 2.出栈返回其值); printf(nn 3 结束); printf(n*); printf(n 请选择(123); scanf(%d,&k); switch(k) case 1:printf(n 请输入进栈整数 X=?);scanf(%d,&x); push(&s,x);print(&s); break; case 2: x=pop(&s); printf(n 出栈元素:%d,x); print(&s); break; case 3:exit(0); printf(n-);while(k=1 &k3);printf(n 按回车
6、返回);getch();else printf(n 初始化失败!n);2) .栈的链式存储结构#include#includetypedef struct SNodeint data;struct SNode*next;SNode,*LinkStack;LinkStack top;LinkStack PushStack(LinkStack top,int x)/入栈LinkStack s;s=(LinkStack)malloc(sizeof(SNode);s-data=x;s-next=top;top=s;return top;LinkStack PopStack(LinkStack top)
7、 /退栈LinkStack p;if(top!=NULL)p=top;top=top-next;free(p);printf(退栈已完成n);return top;elseprintf(栈是空的,无法退栈!n);return 0;int GetStackTop(LinkStack top) /取栈顶元素return top-data;bool IsEmpty()return top=NULL?true:false;void Print()SNode*p;p=top;if(IsEmpty()printf(The stack is empty!n);return;while(p)printf(%d
8、 ,p-data);p=p-next;printf(n);void main()int x,a,b;char m;do printf(n); printf( 链栈的基本操作 n); printf( n); printf( 1.置空栈 n); printf( 2.进栈 n); printf( 3.退栈 n); printf( 4.取栈顶元素 n); printf( 5.退出程序 n); printf(n 请选择一个数字(1 2 3 4 5):); scanf(%c,&m);switch(m)case 1: top=NULL; printf(n栈已置空!); break;case 2: print
9、f(请输入要进栈的元素个数是:); scanf(%d,&a); printf(n请输入要进栈的%d个元素:,a); for(b=0;ba;b+) scanf(%d,&x); top=PushStack(top,x); printf(进栈已完成!n); printf(n输出栈为:); Print(); break;case 3: printf(n操作之前的输出栈为:); Print(); top=PopStack(top); printf(n操作过后的输出栈为:); Print(); break;case 4: printf(n输出栈为:); Print(); if(top!=NULL) pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列 顺序 链式 储存 结构 数据结构 试验报告
限制150内