实验二栈和队列的操作与应用

实验二栈和队列的操作与应用

ID:34463191

大小:56.00 KB

页数:8页

时间:2019-03-06

实验二栈和队列的操作与应用_第1页
实验二栈和队列的操作与应用_第2页
实验二栈和队列的操作与应用_第3页
实验二栈和队列的操作与应用_第4页
实验二栈和队列的操作与应用_第5页
资源描述:

《实验二栈和队列的操作与应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二栈和队列的操作与应用【实验目的】1.熟练掌握栈和队列的特点2.掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用3.掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用,掌握环形队列的入队和出队等基本操作4.加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力1.掌握线性表的两类存储结构(顺序存储结构和链式存储结构)的描述方法。【实验内容】1.定义顺序栈,完成栈的基本操作:空栈、入栈、出栈、取栈顶元素;2.实现十进制数与八进制数的转换,十进制数与十六进制数的转换和任意进制之间的转换;3.定义链式队列,完成队列的基本操作:入队和出队;···1亲亲1···

2、···············11112【实验指导】1.利用栈的顺序存储结构,设计一组输入数据(假定为一组整数),能够对顺序栈进行如下操作:(1)初始化一个空栈,分配一段连续的存储空间,且设定好栈顶和栈底;(2)完成一个元素的入栈操作,修改栈顶指针;(3)完成一个元素的出栈操作,修改栈顶指针;(4)读取栈顶指针所指向的元素的值;(5)将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(2504)8NNdiv8Nmod8134816841682102125202从中我们可以看出,

3、最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。所以可以用顺序栈来模拟这个过程。以此来实现十进制数与八进制数的转换,十进制数与十六进制数的转换;(6)编写主程序,实现对各不同的算法调用。2.程序组织(1)首先将顺序栈存储结构定义放在一个头文件:如取名为SqStackDef.h。(2)将顺序栈的基本操作算法也集中放在一个文件之中,如取名为SqStackAlgo.h。如:InitStack、DestroyStack、ClearStack、StackEmpty、StackLength、GetTop、Push、Pop等。(3)将函数的测试和主函数组合成

4、一个文件,如取名为SqStackUse.cpp。3.利用队列的链式存储结构,设计一组输入数据(假定为一组整数),能够对链式队列进行如下操作:(1)初始化一个空队列,形成一个带表头结点的空队;(2)完成一个元素的入队操作,修改队尾指针;(3)完成一个元素的出队操作,修改队头指针;(4)修改主程序,实现对各不同的算法调用。4.程序组织(1)首先将链式队列的存储结构定义放在一个头文件:如取名为LinkQueueDef.h。(2)将链式队列的基本操作算法也集中放在一个文件之中,如取名为LinkQueueAlgo.h。如:InitQueue、DestroyQueue、Clear

5、Queue、QueueEmpty、QueueLength、GetHead_Q、EnQueue、DeQueue、QueueTraverse等。(3)将函数的测试和主函数组合成一个文件,如取名为LinkQueueUse.cpp。长春大学计算机科学技术学院实验报告日期_______________地点______________指导教师_____________成绩实验二栈和队列的操作与应用要求:1.完成算法填空,并上机运行调试。2.将运行结果粘贴在指定处。3.将完成的实验报告单独建立一个新文件,命名为:班级+学号+姓名+(实验二),(如:1340538张三(实验二)),发

6、邮件到:ccujsjzl@163.com。一、顺序栈,对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数1.文件SqStackDef.h中实现了栈的顺序存储表示#defineSTACK_INIT_SIZE10/*存储空间初始分配量*/#defineSTACKINCREMENT2/*存储空间分配增量*/typedefstructSqStack{SElemType*base;/*在栈构造之前和销毁之后,base的值为NULL*/SElemType*top;/*栈顶指针*/intstacksize;/*当前已分配的存储空间,以元素为单位*/}SqStack;/*顺

7、序栈*/2.文件SqStackAlgo.h中实现顺序栈的基本操作(存储结构由SqStackDef.h定义)StatusInitStack(SqStack&S){/*构造一个空栈S*/S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)exit(OVERFLOW);/*存储分配失败*/S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;}intStackLength(SqStackS){/*返回S的元素个数,即栈的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。