数据结构两个栈模拟队列.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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 需求分析 本实验要求利用两个栈模拟队列操作,其中一个栈模拟入队,另外一个栈模拟出队。操作中能够进行动态的元素入队、出队操作,同时判断队空、队满。 输入形式及范围 采用键盘输入,进行菜单选择和元素输入两种操作;菜单选择输入1-3选项,元素输入范围是整数。队长:10。 输出形式 显示元素入队或出队情况,显示队列已满或已空。 程序功能 实现模拟队列的操作,显示元素入队或出队情况并判断队列是否已满或已空。 测试数据 图 1 测试操作流程 2 设计概要 2.1 问题分析 本实验要求利用两个栈模拟队列,并实现队列的入队、出队和判断对空、对满操作。 两个栈分别用来模拟队列的入队和出队操作。由于队列的特点是“先进先出”,而栈的特点为“先进后出”,首先压入栈的元素最后出栈。这就需要一个栈模拟入队,即把“入队”的元素压入栈1中;再逐一出栈压入另一个栈2,此时首先压入栈1的元素在栈2中也会首先出栈。将栈2中元素逐一出栈,即完成了对队列的模拟操作。 2.2 设计说明 1. 数据类型 typedef struct stack/*栈结构*/ { int s[S_LEN]; int* top; int* bottom; }Stack; 2. 程序流程 由以上分析,实现队列的模拟程序主要包括三个模块:选择模块、入队、出队。 选择模块主要显示选择菜单,以提供入队、出队和结束程序三种操作。设计界面如下: 请选择操作: 1.入队 2.出队 3.结束 入队模块将输入的元素压入栈1,也包括对栈满的判断。函数中会调用入栈、出栈函数。 出队模块将栈1中需要模拟出队的元素压入栈2,再由栈2出栈,其中同意包括对栈空的判断。函数中会调用入栈、出栈函数。 除以上三个主要模块之外,还需要编写入栈、出栈函数,并进行两个栈的初始化。 具体的流程我们以流程图形式给出: 3 详细设计 3.1 调用关系 主函数中调用入队、出队函数及菜单选择操作 入队函数中调用入栈函数和判断栈满函数 出队函数中调用出栈函数及判断栈空函数 3.2 函数代码 主函数 void main() { int i,j; int choice,num,account; S1.bottom=(S1.s[0]);//初始化 这个非常重要!! S1.top=(S1.s[0]); S2.bottom=(S2.s[0]); S2.top=(S2.s[0]); while(choice!=3){ printf( 请选择操作:\n); printf( 1.入队\n 2.出队\n 3.结束\n); scanf(%d,choice); getchar(); switch(choice){ case 1: printf(请输入入队元素个数:); scanf(%d,account); printf(\n); getchar(); printf(请输入数字:); for(i=0;iaccount;i++){ scanf(%d,num); getchar(); inqueue(num); } printf(\n); break; case 2: printf(请输入出队元素个数:); scanf(%d,account); for(j=0;jaccount;j++){ dequeue(); } break; case 3:break; } } printf(谢谢!); } 入队/出队函数 int inqueue(int num)//进队列 { int ret=empty(S2); if(S1.top-S1.bottom==S_LEN!ret){ printf(Queue is full.\n); return 0; } else{ ret=empty(S2); if(S1.top-S1.bottom==S_LENret){ while(!empty(S1)){

文档评论(0)

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

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

1亿VIP精品文档

相关文档