数据结构用两个栈模拟队列的操作.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

您可能关注的文档

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档