- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构用两个栈模拟队列的操作
《数据结构》实验报告
◎实验题目:用两个栈模拟队列的操作。
◎实验目的:1、掌握使用Visual C++6.0上机调试程序的基本方法;
掌握栈与队列中的基本操作并学会灵活运用;
提高自己分析问题和解决问题的能力,在实践中理解教材上的理论。
◎实验内容:通过两个栈s1和s2模拟队列的进队操作,出队操作,对队满和队空的判断,遍历输出队列中的所有数据。
一、需求分析
1、输入的形式和输入值的范围:根据提示,输入序号以选择要进行的操作(进队、出队、结束),进行进队或出队前,需输入进队或出队数据的个数,再输入相应个数的数据。
2、输出的形式:在进队的数据输入完毕后后,输出已经进入队列的所有数据,若队已满存在未进入队列的数据,则输出相应的队满的提示;在输入出队数据的个数完成后,则输出要出队的所有数据,若队列中的数据个数小于操作者想要输出的数据个数,则提示队空,然后再输出出队后队列中的所有数据。
3、程序所能达到的功能:根据提示进行操作,模拟进队,出队,判断队满和队空,以及输出队列中的所有数据。
4、测试数据:
请选择要进行的操作(1.进队 2.出队 3.结束):1
请输入进队数据个数:14
输入数据:1 2 3 4 5 6 7 8 9 10 11 12 13 14
队已满,11未进入队列
队已满,12未进入队列
队已满,13未进入队列
队已满,14未进入队列
此时队列中的数据依次为:1 2 3 4 5 6 7 8 9 10
请选择要进行的操作(1.进队 2.出队 3.结束):2
请输入出队数据个数:3
出队的数据为:1 2 3
此时队列中的数据依次为:4 5 6 7 8 9 10
请选择要进行的操作(1.进队 2.出队 3.结束):2
请输入出队数据个数:10
出队的数据为:4 5 6 7 8 9 10 队空!
此时队列中已没有数据
请选择要进行的操作(1.进队 2.出队 3.结束):3
谢谢你的使用
二 概要设计
(一)栈按照“后进先出”的顺序进行操作,队列按照“先进后出”的顺序进行操作,所以本题中利用两个顺序栈s1和s2模拟队列的操作。
1、模拟进队可以通过将数据输入栈s1实现,当栈s1已满并且栈s2为空时,须将栈s1中的数据由栈顶至栈底依次全部移入栈s2;
2、模拟出队可以将数据由栈s2输出实现,当栈s2已空但仍需要继续模拟出队操作时,若栈s1非空则需要将栈s1中的数据由栈顶至栈底依次全部移入栈s2,继续输出;
3、当栈s1满且栈s2非空则表示队列已满,当栈s1空且栈s2空则表示队列已空;
4、遍历输出队列中的数据,该过程的模拟通过自栈顶至栈底输出栈s2中的数据,接着自栈底至栈顶输出栈s1中的数据来实现。
(二)本程序的基本操作和模块:
1、顺序栈的基本操作,包括以下部分:
初始化顺序栈:InitStack(SeqStack s)
判断栈满:StackFull(SeqStack s)
判断栈空:StackEmpty(SeqStack s)
入栈:Push(SeqStack s,int a)
出栈:Pop(SeqStack s)
将栈s1中数据全部移入栈s2:Fun(SeqStack s1,SeqStack s2)
利用栈的基本操作,模拟队列的操作:
判断队满:QueueFull(SeqStack s1,SeqStack s2)
判断队空:QueueEmpty(SeqStack s1,SeqStack s2)
进队:enQueue(SeqStack s1,SeqStack s2,int m)
出队:deQueue(SeqStack s1,SeqStack s2,int n)
遍历队列:display(SeqStack s1,SeqStack s2)
主函数:main( )
在主函数中调用模拟队列操作的函数,实现题目的要求。
三 详细设计
顺序栈类型描述
typedef struct
{
int data[maxsize];
int top;
}SeqStack;
顺序栈的基本操作
初始化顺序栈:InitStack(SeqStack s)
空栈时栈顶指针top为-1
判断栈满:StackFull(SeqStack s)
若栈顶指针值top==maxsize-1,说明栈满,返回1;否则返回0
判断栈空:StackEmpty(SeqStack s)
若栈顶指针值top==-1,说明栈空,返回1;否则返回0
入栈:Push(SeqStack s,int a)
首先判断栈是否满,若栈未满,则让栈顶指针上移,数据元素入栈
出栈:Pop(SeqStack s)
首先判断栈是否空,若栈不空,则输出栈顶元素值,栈顶指针下移
6、将栈s1中数据全部移入栈s2:Fun(SeqStack s1,SeqStack s2
whi
您可能关注的文档
- 塑性成型中CAE的应用.doc
- 塑料射出成型的问题与改善对策.doc
- 塑料成型中缺陷的现象及解决办法.doc
- 塑料壳体课程设计.doc
- 塑料成型及模具设计论文.doc
- 塑料成型工艺学之塑料注射实验指导书070420.doc
- 塑料成型工艺复习资料.docx
- 塑料产品十大设计窍门.doc
- 塑料模试卷2含答案.doc
- 塑料注塑取向的若干问题讨论.doc
- 2025年浙江金华浦江县教育系统引进优秀毕业生网络招聘笔试备考题库带答案详解.docx
- 2025年浙江湖州安吉县人民检察院聘用制书记员及驾驶员招录笔试备考题库及答案详解1套.docx
- 2025年河南省(濮阳市)事业单位招聘248人联考工作的笔试高频难、易错点备考题库附答案详解.docx
- 2025年海南省环境科学研究院招聘11名事业编制专业技术人员(一)笔试备考题库及参考答案详解1套.docx
- 2025年浙江温州平阳县中医院赴温州医科大学选聘医学类优秀毕业生9人笔试备考题库及完整答案详解1套.docx
- 2025年浙江宁波宁海县公安局第一批招聘警务辅助人员54人笔试高频难、易错点备考题库及参考答案详解一.docx
- 2025年河北开放大学选聘工作人员2人笔试高频难、易错点备考题库附答案详解.docx
- 2025年河北省文物与古建筑保护研究院选聘笔试备考题库及参考答案详解一套.docx
- 2025年清远市林业局清城分局招聘工作人员笔试备考题库参考答案详解.docx
- 2025年浙江省疾病预防控制中心招聘12人笔试高频难、易错点备考题库及参考答案详解.docx
文档评论(0)