网站大量收购闲置独家精品文档,联系QQ:2885784924

天大数据结构_实验作业二_栈(顺序栈)+队列(循环队列).docVIP

天大数据结构_实验作业二_栈(顺序栈)+队列(循环队列).doc

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
天大数据结构_实验作业二_栈(顺序栈)+队列(循环队列).doc

实验作业二:栈(顺序栈)和队列(循环队列) 1. 将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。当向第0号栈插入一个新元素时,使top[0]增1得到新的栈顶位置,当向第1号栈插入一个新元素时,使top[1]减1得到新的栈顶位置。当top[0]+1 == top[1]时或top[0] == top[1]-1时,栈空间满,此时不能再向任一栈加入新的元素。试定义这种双栈(Double Stack)结构的类定义,并实现判栈空、判栈满、插入、删除算法。 2. 求fibonacci数列算法,并比较。(递归+非递归)(非递归方法可查阅其他资料) 编写实习报告要求: 一、需求分析 二、概要设计 1.抽象数据类型 2.算法 三、详细设计 程序代码(注释) 四、调试分析 调试过程中所做的工作,时间复杂度等 五、测试结果 输入数据和输出数据示例 六、说明(如果有) 编程语言:C语言或C++语言 实习报告提交方式:下次上机前,将实习报告(.doc)和源程序(.cpp)压缩成一个rar文件,文件名称为学号_班级_姓名_第几次作业。例如:3010216155_六班_张三_第次作业.rar。实习报告作为本课程的平时成绩。 抄袭、雷同,双方均为0分。 第一题: 需求分析 二、概要设计 1.抽象数据类型typedef struct { int *base; int *top; int stacksize; }stack; 2.算法int instack(stack s,stack w,int length){ s.base=(int *)malloc(length*sizeof(length)); w.base=s.base+length; if(!s.base||!w.base) return 0; else{ s.top=s.base; w.top=w.base; s.stacksize=length; w.stacksize=length; } return 1; } 2.判断栈空。 int isempty(stack s,stack w){ if(s.top==s.basew.top==w.base) return 1; if(s.top==s.base) return 2; if(w.top==w.base) return 3; else return 0; } 3.判断栈满。 int isfull(stack s,stack w){ if((s.top+1)==w.top) return 1; else return 0; } 4.插入元素到左边栈。 void push1(stack s,stack w, int x){ if((s.top+1)==w.top) cout栈满,无法进栈!endl; else{ *s.top=x; s.top++; } } 5.插入元素到右边栈。 void push2(stack s,stack w, int x){ if((s.top+1)==w.top) cout栈满,无法进栈!endl; else{ *w.top=x; w.top--; } } 6.左栈元素出栈。 void pop1(stack s,int x){ if(s.top==s.base) cout栈空,无法出栈!endl; else{ --s.top; x=*s.top; } } 7.右栈元素出栈。 void pop2(stack w,int x){ if(w.top==w.base) cout栈空,无法出栈!endl; else{ w.top++; x=*w.top; } } 详细设计 int main(){ int x,l,pase,choice,pr; //定义变量 stack s,w; //定义栈 cout请输入共享栈的长度:endl; cinl; //读取共享栈的长度 pase=instack(s,w,l); //依据长度创建空间 while(pase!=0) { cout\n********子菜单********; cout\n**1---插入数据到表一**; cout\n**2---插入数据到表二**; cout\n**3---表一的元素出栈**; cout\n**4---表二的元素出栈**; cout\n**5---判断栈空******

文档评论(0)

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

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

1亿VIP精品文档

相关文档