数据结构实验报告 栈与队列 共享栈与链栈的模板类实现及测试函数.docxVIP

数据结构实验报告 栈与队列 共享栈与链栈的模板类实现及测试函数.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告实验名称:实验二——栈和队列学生姓名:班级:班内序号:学号:日期:1.实验要求2.1题目1根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。要求:实现一个共享栈实现一个链栈实现一个循环队列实现一个链队列编写测试main()函数测试线性表的正确性。2. 程序分析2.1 存储结构共享栈:链栈:2.2关键算法分析2.2.1 共享栈入栈:if (top1 == top2 - 1) //判断栈是否已满{throw 上溢;}if (i == 1)//如果要入栈1{data[++top1] = x; //top指针加一,然后赋值}if (i == 2)//如果要入栈2{data[--top2] = x; //top指针减1,赋值}出栈:if (i == 1){if (top1 == -1) //判断栈1是否为空{throw 下溢;}return data[top1--]; //返回出栈元素的值并且栈顶指针下移}if (i == 2){if (top2 == StackSize){throw 下溢;}return data[top2++]; //返回出栈元素的值并且栈顶指针上移}查找栈顶元素:if (i == 1){if (top1 != -1) //如果栈1非空{return data[top1];}}if (i == 2) {if (top2 != StackSize) //如果栈2非空{return data[top2];}}判断栈是否为空:if (i == 1){if (top1 == -1){return true;}else{return false;}}if (i == 2){if (top2 == StackSize){return true;}else{return false;}}return false;输出栈中元素:int temp1 = top1; //工作指针while (temp1 != -1) //判断栈一是否为空{cout data[temp1--] ; //输出元素,工作指针减一}int temp2 = top2; //工作指针while (temp2 != StackSize) //判断栈二是否为空{cout data[temp2++] ; //输出元素,工作指针加一}2.2.2 链栈析构函数:while (top) //判断是否为空{struct NodeT*p = top; //新建工作指针,并用top指针初始化top = top-next; //top指针后移delete p;}入栈:struct NodeT*p = new NodeT; //新建工作指针指向新结点p-data = x; //新结点的数据域赋值为xp-next = top; //新节点的next域记录top指针指向地址top = p; //栈顶指针该为p出栈:if (Empty()) throw下溢;T x = top-data; //保存数据struct NodeT*p = top; //保存栈顶指针地址top = top-next; //栈顶指针后移delete p; //删除return x; //返回数值查找栈顶元素:if (Empty()){ throwempty; }return top-data;3. 程序运行结果1.共享栈测试主函数流程开始新建共享栈入栈操作出栈操作查找栈顶元素判断栈是否为空输出栈中元素结束2.链栈测试主函数流程图开始新建数组为数组元素赋值并入栈出栈操作查找栈顶元素判断栈是否为空执行析构函数结束程序运行结果:源代码#includeiostreamusingnamespacestd;constintStackSize = 10; //定义栈的最大高度templateclassT1classBothStack//定义两栈共享空间的c++模板类{public:BothStack() //构造函数,初始化空栈{top1 = -1;top2 = StackSize;}voidPush(inti, T1 x); //入栈操作T1Pop(inti); //出栈操作T1GetTop(inti); //查找栈顶元素boolEmpty(inti); //判断栈是否为空栈voidPrint(); //先打印栈1,再打印栈2 private:T1data[StackSize];inttop1, top2;};templatecla

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档