![数据结构实验-栈和队列基本操作_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/b74755e6-733c-4e6d-8d04-c5c2aefe7f23/b74755e6-733c-4e6d-8d04-c5c2aefe7f231.gif)
![数据结构实验-栈和队列基本操作_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/b74755e6-733c-4e6d-8d04-c5c2aefe7f23/b74755e6-733c-4e6d-8d04-c5c2aefe7f232.gif)
![数据结构实验-栈和队列基本操作_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/b74755e6-733c-4e6d-8d04-c5c2aefe7f23/b74755e6-733c-4e6d-8d04-c5c2aefe7f233.gif)
![数据结构实验-栈和队列基本操作_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/b74755e6-733c-4e6d-8d04-c5c2aefe7f23/b74755e6-733c-4e6d-8d04-c5c2aefe7f234.gif)
![数据结构实验-栈和队列基本操作_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/b74755e6-733c-4e6d-8d04-c5c2aefe7f23/b74755e6-733c-4e6d-8d04-c5c2aefe7f235.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大 学数据结构课程实验报告实 验 名 称:栈和队列基本操作的实现及应用实验室(中心): 学 生 信 息: 专 业 班 级: 指 导 教 师 : 教师评阅意见: 签名: 年 月 日实验成绩:实验完成时间: 2016 年 章: 错误!文档中没有指定样式的文字。2实验二 栈和队列基本操作的实现及应用一、实验目的1. 掌握栈的顺序表示和实现2. 掌握队列的链式表示和实现二、实验内容及要求1. 编写一个程序实现顺序栈的各种基本运算。2. 实现队列的链式表示和实现。三、实验设备及软件计算机、Microsoft Visual C+ 6.0软件四、设计方案(算法设计) 采用的数据结构本程序栈数据的逻辑结构为线
2、性结构,存储结构为顺序存储;队列的数据逻辑结构依然为线性结构,存储结构为链式结构。 设计的主要思路章: 实验二 栈和队列基本操作的实现及应用151. 初始化顺序栈2. 插入元素3. 删除栈顶元素4. 取栈顶元素5. 遍历顺序栈6. 置空顺序栈7. 初始化并建立链队列8. 入链队列9. 出链队列10. 遍历链队列 算法描述1、栈Sta InitSta(SqSta &S)/构造一个空栈Sta DesSta(SqSta &S)/销毁栈Sta StaDisplay(SqSta &S)/显示栈Sta GetTop(SqSta S,Type &e) /若栈不空,则用e返回S
3、的栈顶元素,并返 回OK;否则返回ErrorSta Push(SqSta &S,Type e) /插入元素e为新的栈顶元素Sta Pop(SqSta &S,Type &e)/若栈不为空,则删除栈顶元素,用e返回其值,并返回OK;否则返回ErrorSta StaEmp(SqSta S) /若为空栈,则返回True,否则返回False。2、队列Sta InitLQ(LQ &); /初始化一个队列Sta DesLQ(LQ &); /销毁一个队列int LQLength(LQ &Q); /队列的长度Sta EnLQ(LQ &,Type); /将一
4、个元素入队列Sta DeLQ(LQ &,Type &); /将一个元素出队列Sta DisplayLQ(LQ); /显示队列中所有元素五、程序代码1、栈#include <stdio.h>#include <stdlib.h>#include <conio.h>#define True 1#define False 0#define OK 1#define Error 0#define InFea -1#define OverFlow -2typedef int Sta;typedef int Type;#define StaSize 100
5、#define StaInc 10typedef struct Type *base; Type *top; int stacksize; SqSta;Sta InitSta(SqSta &S)/构造一个空栈S.base = (Type *) malloc(StaSize*sizeof(Type);if(!S.base) exit(OverFlow); S.top = S.base;S.stacksize = StaSize;return OK;Sta DesSta(SqSta &S)/销毁栈if(S.base) free(S.base);S.top = S.base = NU
6、LL;return OK;Sta StaDisplay(SqSta &S)/显示栈Type * p=S.base;int i = 0;if(S.base = S.top) printf("提示:堆栈已空!nn"); return OK;while( p < S.top)printf("%d:%d",+i,*p+);printf("nn");return OK;Sta GetTop(SqSta S,Type &e) /若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回Errorif(S.top=S.base)
7、return Error;e=*(S.top-1);return OK;Sta Push(SqSta &S,Type e)/插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize)/栈满,追加存储空间S.base=(Type*) realloc(S.base,(S.stacksize+StaInc)*sizeof(Type);if( ! S.base ) exit(OverFlow);S.top = S.base + S.stacksize;S.stacksize += StaInc;* S.top + = e;return OK;Sta Pop(SqS
8、ta &S,Type &e)/若栈不为空,则删除栈顶元素,用e返回其值,并返回OK;否则返回Error if (S.top = S.base) return Error; e = * -S.top; return OK;Sta StaEmp(SqSta S)/若为空栈,则返回True,否则返回False。if(S.top = S.base) return True;else return False;void main()SqSta St;Sta temp;int F=1,ch;int e;printf("本程序用于实现顺序结构的堆栈的操作,可以进行入栈,出栈,取栈顶
9、元素等操作.nn");InitSta(St); while(F)printf("请输入需要进行操作的序号:nn");printf("1.显示栈中所有元素 n");printf("2.入栈操作 n");printf("3.出栈操作 n");printf("4.取栈顶元素 n");printf("5.退出程序 n");scanf("%d",&ch);switch(ch)case 1:StaDisplay(St);break;case 2:pr
10、intf("提示:请输要入栈的一个整数元素:n");scanf("%d",&e); temp=Push(St,e); /入栈运算if(temp!=OK) printf("提示:堆栈已满!入栈失败!nn");else printf("提示:成功入栈!nn"); StaDisplay(St);break;case 3:temp=Pop(St,e); /出栈运算if(temp=Error) printf("提示:堆栈已空!nn"); else printf("提示:成功出栈一个元素:
11、%dnn",e); StaDisplay(St);break;case 4:temp=GetTop(St,e); /取得栈顶元素if(temp=Error) printf("提示堆栈已空!nn");else printf("提示:栈顶元素是:%dnn",e);break;default:F=0;printf("提示:程序结束,按任意键退出!nn");getch();DesSta(St);2、队列#include <conio.h>#include <stdio.h>#include <stdli
12、b.h>#define True 1#define False 0#define OK 1#define Error 0#define InFea -1#define OverFlow -2typedef int Sta;typedef int Type;typedef struct QNode/定义结点结构 Type data; struct QNode *next; QNode,*QueuePtr;typedef struct LQ/定义队列结构 QueuePtr front; QueuePtr rear; LQ;Sta InitLQ(LQ &); /初始化一个队列Sta D
13、esLQ(LQ &); /销毁一个队列int LQLength(LQ &Q); /队列的长度Sta EnLQ(LQ &,Type); /将一个元素入队列Sta DeLQ(LQ &,Type &); /将一个元素出队列Sta DisplayLQ(LQ); /显示队列中所有元素void main()LQ LQ;Type e;int F=1,ch,len;Sta temp;printf("本程序用于实现链式结构队列的操作,可以进行入队列、出队列等操作.nn");InitLQ(LQ); while(F)printf("请输入需要进行
14、操作的序号:nn");printf("1.显示队列所有元素n");printf("2.入队列操作n");printf("3.出队列操作n");printf("4.求队列的长度n");printf("5.退出程序n");scanf("%d",&ch);switch(ch) case 1:DisplayLQ(LQ); break;case 2:printf("提示:请输入要人队的一个整数元素:n");scanf("%d",
15、&e); EnLQ(LQ,e);/入队DisplayLQ(LQ);break;case 3:temp=DeLQ(LQ,e); /出队if(temp=OK)printf("提示:出队一个元素:%dnn",e);DisplayLQ(LQ);else printf("提示:队列为空!nn");break;case 4:len=LQLength(LQ);printf("提示:队列的长度为:%dnn",len);break;default:F=0;printf("提示:程序运行结束,按任意键退出!nn");getch
16、();Sta InitLQ(LQ &Q)/队列初始化Q.front=Q.rear=(QueuePtr) malloc(sizeof(QNode); Q.front->next=NULL;return OK;Sta DesLQ(LQ &Q)/销毁一个队列QueuePtr p;Type e;while(Q.front!=Q.rear)DeLQ(Q,e);free(Q.front);Q.front=Q.rear=NULL;return OK;int LQLength(LQ &Q)/队列的长度int i=0;QueuePtr p=Q.front;while(p!=Q.re
17、ar)+i;p=p->next;return i;Sta EnLQ(LQ &Q,Type e)/入队列QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode);p->data=e; p->next=NULL;Q.rear->next=p; Q.rear=p; return OK;Sta DeLQ(LQ &Q,Type &e)/出队列QueuePtr p;if(Q.front=Q.rear) return Error; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear=p) Q.rear=Q.front; return OK; Sta DisplayLQ(LQ Q)/显示队列中所有元素QueuePtr p;int i=0;p=Q.front->next;if(p=NULL)printf("提示:队列为空!nn");elsewhi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课程设计图形编辑
- 供料系统课程设计报告
- 2023年10月高教自考《经济学(二)》试卷含解析
- 2024年学习焦裕禄精神心得体会例文(五篇)
- 2024年个人原因辞职报告(3篇)
- 2024年公司个人年终工作总结参考(5篇)
- 2024年冬季安全教育演讲稿范例(三篇)
- 2024年初中语文教学工作总结(三篇)
- 2024年音乐教师工作总结参考样本(2篇)
- 北京代理购房合同协议书
- 中医养生馆计划书项目融资计划书
- 2023年11月2024年天津市气象局招考聘用应届生笔试历年高频考点(难、易错点)附答案详解
- 镶贴工施工详细方案培训
- 单片机原理与应用(C51编程+Proteus仿真) 课件全套 刘霞 第1-10章 单片机概述- 单片机应用系统综合设计
- 房屋租赁运营服务投标方案(技术方案)
- 岩土工程勘察服务投标方案(技术方案)
- 乐理五线谱音符(共35张PPT)
- (2.3)-《计量经济学》案例 - 异方差
- 广东省广州市2023年中考英语真题(附答案)
- 七年级班主任开学第一课-课件
- 人教版(川教版)五年级上册生命生态安全教学设计和教学计划及进度表(附安全知识)
评论
0/150
提交评论