ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:161.75KB ,
资源ID:9716556      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9716556.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验两个栈模拟队列.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验两个栈模拟队列.docx

1、数据结构实验两个栈模拟队列数据结构实验报告实验题目: 利用两个顺序栈模拟一个队列实验目的:熟悉顺序栈和队列的建立以及遍历,并且了解两者之间的区别与联系。实验内容:利用两个顺序栈,一个栈模拟入队,一个栈模拟出队,实现两个栈模拟队的操作。一、需求分析1.本程序中首先设定队的大小为20,以便判断队满,首先应输入入队元素个数,然后输入入队元素,后根据提示入队或出队,如入队,重复上述过程,如出队,输入出队元素个数,然后程序会显示出队元素,可以重复上述过程,直到输入结束为止。2.演示程序以用户和计算机的对话方式执行,可以按照计算机程序显示提示进行操作。3.程序执行命令包括:(1)构造栈(2)初始化栈(3)

2、选择输入方式既入队或是出队,如是入队,先输入需要入队元素个数,再输入元素,如要出队,输入要输出元素个数,则可直接显示出队元素,可重复上述过程(4)结束4.测试数据(1)入队元素个数5,分别为1 2 3 4 5,然后出队元素个数为3个,结果为1 2 3(2)再入队5个,分别为6 7 8 9 10,再出队6个4 5 6 7 8 9(3)再出队3个,分别为10 队空(4)入队元素个数25个,分别为1-25,在输入21时显示队满。二 概要设计为实现上述操作,应以两个栈为存储结构1. 基本操作:void initstack(seqstack &s) 操作结果:实现栈的初始化void inqueue(se

3、qstack &s1,seqstack &s2) 操作结果:实现入队功能void outqueue(seqstack &s1,seqstack &s2)操作结果:实现出队功能2. 本程序包含四个模块(1) 主程序模块(2) 栈初始化模块】(3) 入队模块(4) 出队模块3. 模块调用图 三 详细设计1. 元素类型,节点类型和指针类型typedef int elemtype;typedef struct elemtype datamaxsize; int top;seqstack;seqstack s1,s2;2. 每个模块的分析(1) 主程序模块int main() int k,m,selec

4、t,num; seqstack s1,s2; initstack(s1); /*初始化栈s1*/ initstack(s2); /*初始化栈s2*/ while(select!=3) /*选择操作*/ printf(请选择操作:n); printf(1.入队n2.出队n3.结束n); scanf(%d,&select); switch(select) case 1: inqueue(s1,s2); /*入队操作*/ break; case 2: printf(请输入出队元素个数:n); /*输入出队元素个数*/ scanf(%d,&num); for(k=0;knum;k+) /*利用循环输出

5、元素*/ if(s1.top=-1&s2.top=-1) /*判断队空*/ printf(队空.n); break; else /*如果不空,则出队*/ outqueue(s1,s2); break; case 3: break; getchar(); getchar(); return 0;(2) 栈初始化模块void initstack(seqstack &s) s.top=-1;(3) 入队模块void inqueue(seqstack &s1,seqstack &s2) int number,m,i; printf(请输入入队元素个数:n); scanf(%d,&number); /*

6、输入入队元素个数*/ for(i=0;inumber;i+) printf(请输入元素:); /*输入入队元素*/ scanf(%d,&m); if(s1.top=maxsize-1&s2.top!=-1) /*判断队满,即s1栈为满,s2栈不为空,此时对中不能再进元素*/ printf(队满.n); break; else /*如果队不满可以接着入队*/ if(s1.top!=maxsize-1) /*如果s1不满,接着入队,让元素进栈s1*/ s1.top+; s1.datas1.top=m; Else /*如果s2空,先让栈s1中元素进入栈s2,直到s1空,然后让元素进入s1*/ do

7、s2.top+; s2.datas2.top=s1.datas1.top; s1.top-; while(s1.top!=-1); s1.top+; s1.datas1.top=m; (4) 出队模块void outqueue(seqstack &s1,seqstack &s2) if(s2.top!=-1) /*如果栈s2不空,直接出栈,相当于出队*/ printf(元素%d出队,s2.datas2.top); s2.top-; else /*如果s2空,让s1中元素进s2,直到s1为空,然后再出栈*/ do s2.top+; s2.datas2.top=s1.datas1.top; s1.

8、top-; while(s1.top!=-1); printf(元素%d出队,s2.datas2.top); s2.top-; printf(n);(5)函数调用关系图int main()void initstack(seqstack &s)void inqueue(seqstack &s1,seqstack &s2)void outqueue(seqstack &s1,seqstack &s2)3完整的程序:(见源文件).四 使用说明、测试分析及结果1.程序使用说明(1)本程序的运行环境为VC6.0.(2)进入演示程序后即显示提示请选择操作1. 入队2. 出队3. 结束请输入入队元素个数请输

9、入元素请输入出队元素个数2.测试结果(1)入队元素个数5,分别为1 2 3 4 5,然后出队元素个数为3个,结果为1 2 3(2)再入队5个,分别为6 7 8 9 10,再出队6个4 5 6 7 8 9(3)再出队3个,分别为10 队空(4)入队元素个数25个,分别为1-25,在输入21时显示队满。3.调试中的错误刚开始编完运行入队正常,结果无法出队,经检查为在判断队满是s1.top=maxsize-1处少了一个=号,导致错误,改正后正常。4. 运行界面五、实验总结本次试验由于准备不足,实验课前未在纸上进行预编程,实验课上算法思想出现了一定的偏差,导致未能在课上编出程序,回来后经过仔细思考和同

10、学提示,将算法思想进行了改进,然后顺利编出程序,虽然中间出现了一点小问题,经过检查已解决。通过本次试验可以熟练掌握栈的使用。 教师评语:实验成绩:#include#define maxsize 10typedef int elemtype;/队容量最大为20个元素typedef struct elemtype datamaxsize; int top;seqstack;/初始化栈void initstack(seqstack &s) s.top=-1;/入队void inqueue(seqstack &s1,seqstack &s2) int number,m,i; printf(请输入入队元

11、素个数:n); scanf(%d,&number); /*输入入队元素个数*/ for(i=0;inumber;i+) printf(请输入元素:); /*输入入队元素*/ scanf(%d,&m); if(s1.top=maxsize-1&s2.top!=-1) /*判断队满,即s1栈为满,s2栈不为空,此时对中不能再进元素*/ printf(队满.n); break; else /*如果队不满可以接着入队*/ if(s1.top!=maxsize-1) /*如果s1不满,接着入队,让元素进栈s1*/ s1.top+; s1.datas1.top=m; else /*如果s2空,先让栈s1中

12、元素进入栈s2,直到s1空,然后让元素进入s1*/ do s2.top+; s2.datas2.top=s1.datas1.top; s1.top-; while(s1.top!=-1); s1.top+; s1.datas1.top=m; /出队void outqueue(seqstack &s1,seqstack &s2) if(s2.top!=-1) /*如果栈s2不空,直接出栈,相当于出队*/ printf(元素%d出队,s2.datas2.top); s2.top-; else /*如果s2空,让s1中元素进s2,直到s1为空,然后再出栈*/ do s2.top+; s2.datas

13、2.top=s1.datas1.top; s1.top-; while(s1.top!=-1); printf(元素%d出队,s2.datas2.top); s2.top-; printf(n);int main() int k,m,select,num; seqstack s1,s2; initstack(s1); /*初始化栈s1*/ initstack(s2); /*初始化栈s2*/ while(select!=3) /*选择操作*/ printf(请选择操作:n); printf(1.入队n2.出队n3.结束n); scanf(%d,&select); switch(select) case 1: inqueue(s1,s2); /*入队操作*/ break; case 2: printf(请输入出队元素个数:n); /*输入出队元素个数*/ scanf(%d,&num); for(k=0;knum;k+) /*利用循环输出元素*/ if(s1.top=-1&s2.top=-1) /*判断队空*/ printf(队空.n); break; else /*如果不空,则出队*/ outqueue(s1,s2); break; case 3: break; getchar(); getchar(); return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1