- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE 11页
北京邮电大学电信工程学院
第 PAGE 1页
2007级数据结构实验报告
实验名称: 实验二 栈和队列
日 期: 2008年11月15日
1.实验要求
实验目的
通过选择下面五个题目之一进行实现,掌握如下内容:
进一步掌握指针、模板类、异常处理的使用
掌握栈的操作的实现方法
掌握队列的操作的实现方法
学习使用栈解决实际问题的能力
学习使用队列解决实际问题的能力
实验内容
2.1题目1
根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。
要求:
实现一个共享栈
实现一个链栈
实现一个循环队列
实现一个链队列
编写测试main()函数测试线性表的正确性。
2. 程序分析
2.1 存储结构
存储结构:
特殊线性表:栈,队列
下标:
下标:0 1 i-1
共享栈
a1 a2 …… ai bj …… b2 b1
栈1底 top1 top2 栈2底
StackSize-1
循环队列front
循环队列
front
rear
a6
a5
a4
a7
an-1
an
a1 ∧
栈顶
栈底
top
链栈
∧
∧
a1
a2
an ∧
非空链队列
∧
空链队列
front
rear
front
rear
2.2 关键算法分析
共享栈的入栈算法伪码(Push):
1.如果栈满,抛出上溢异常。
2.判断是插在栈1还是栈2:
2.1如果在栈1插入,则栈顶指针top1加1,在top1处填入元素x;
2.2如果在栈2插入,则栈顶指针top2加1,在top2处填入元素x。
共享栈的出栈算法伪码(Pop):
1. 判断是在栈1删除还是在栈2删除。
2. 若是在栈1删除,则
2.1 若栈1为空栈,抛出下溢异常;
2.2 删除并返回栈1的栈顶元素;
3. 若是在栈2删除,则
3.1 若栈2为空栈,抛出下溢异常;
3.2 删除并返回栈2的栈顶元素。
共享栈的取栈顶元素算法伪码(GetTop):
判断是在栈1取还是栈2取;
如果在栈1取,则
2.1 若栈1不空,返回栈顶元素的值,不删除;
2.2 若栈1空,返回0;
3.如果在栈2取,则
3.1 若栈2不空,返回栈顶元素的值,不删除;
3.2 若栈2空,返回0。
链栈的入栈算法伪码(Push):
申请一个新的结点,数据域为x;
将新结点插在栈顶;
栈顶指针重新指向栈顶元素。
链栈的出栈算法伪码(Pop):
如果栈空,抛出下溢异常;
暂存栈顶元素;
将栈顶结点摘链;
删除该结点,返回该元素的值。
链栈的取栈顶元素算法的伪码(GetTop):
如果栈非空,返回栈顶元素的值,不删除。
循环队列的入队算法伪码(EnQueue):
如果队满,抛出上溢异常;
队尾指针在循环意义下加1;
在队尾插入元素。
循环队列的出队算法伪码(DeQueue):
如果队空,抛出下溢异常;
队头指针在循环意义下加1;
读取并返回出队前的队头元素。
循环队列的取队头元素算法伪码(GetQueue):
如果队空,抛出下溢异常;
值为队头指针的工作指针i在循环意义下加1,注意不给队头指针赋值;
返回队头指针的队头元素。
链队列的入队算法伪码(EnQueue):
申请一个数据域为x的新结点;
该结点的next域置空;
将其插到队尾。
链队列的出队算法伪码(DeQueue):
如果队空,抛出下溢异常;
暂存队头元素;
将队头元素所在结点摘链;
如果被删除的队头元素同时也是队尾元素,则修改队尾指针。
链队列的取队头元素算法伪码(GetQueue):
如果队非空,返回队头元素的值,不删除。
∧
∧
a1 ∧
特殊情况:队列长度为1
a1
a2
an ∧
一般情况:队列长度大于1
链队列出队操作
front
rear
front
rear
p
p
以上算法的时间复杂度均为O(1)。可比较的是空间性能。初始时顺序栈必须确定一个固定的长度,所以有存储元素个数的限制和空间浪费的问题。链栈没有栈满的问题,只有当内存没有可用空间时才会出现栈满。但是每个元素都需要一个指针域,所以产生了结构性开销。循环队列和链队列的空间性能的比较与顺序栈和链栈的空间性能比较类似,只是循环队列不能像顺序栈那样共享空间,通常不能在一个数组中存储两个循环队列。
3. 程序运行结果
开始
开始
新建共享栈B
对B入栈操作
判断两个栈是否为空并输出判断结果
对B取栈顶元素操作
判断两个栈是否为空并输出判断结果
判断两个栈是否为空并输出判断结果
对B出栈操作
共享栈主函数流程图:
新建链栈LS
新建链
您可能关注的文档
- 11《论语》十二章完整版.ppt
- 统计学上机实验报告(一).doc
- 硫酸亚铁铵1实验报告.doc
- 实验报告 用动态法测定金属的杨氏模量.doc
- 保安满意度评估表.doc
- 1.4.2 用空间向量研究距离、夹角问题.ppt
- 梦游天姥吟留别_8.ppt
- 信息技术教案.doc
- 网上银行实验报告.doc
- 最新人教版四年级数学上册全册单元分析.doc
- 2024—2025学年度天津市滨海新区塘沽第十三中学高一第二学期第一次月考历史试题.docx
- 河北省张家口市一中2024-2025学年高一下学期开学检测语文试题(含答案).docx
- 福建省厦门市双十中学2024-2025学年高一3月月考语文试题(含答案).docx
- 广东省台山市一中2024-2025学年高一下学期第一次模拟检测语文试题(含答案).docx
- 河南省南阳市第一中学校2024-2025学年高一下学期第二次月考地理试题(含答案).docx
- 2024—2025学年度吉林省长春东师附中青华学校高一下学期第一次阶段性验收历史试题.docx
- 2024—2025学年度四川省安岳中学高一下学期第一次月考历史试题.docx
- 内蒙古巴彦淖尔市2024-2025学年七年级上学期期末测试英语试题(含答案).docx
- 2024—2025学年度河北省唐山市丰南区第一中学高一第二学期第一次阶段考试历史试题.docx
- 2024—2025学年度江苏省淮安市涟水县第一中学高一第二学期第一次月考历史试题.docx
最近下载
- 2022年江苏省英语中考自动化考试口语情景对话专练真题.pdf VIP
- NB_T 10072-2018 抽水蓄能电站设计规范.docx
- 2025年党支部书记学习教育专题党课中央八项规定专题党课讲稿(严守中央八项规定精神,争做新时代合格党员;从中央八项规定精神看党员干部的责任与担当).docx VIP
- 检验科生化年终工作总结.pptx VIP
- 新概念英语第一册电子版.pdf VIP
- 蕉内品牌手册.pdf
- 河南普通高中会考化学考题试卷 .pdf VIP
- 医院感染暴发控制指南理论试题及答案.pdf VIP
- 工程项目移交申请单.docx VIP
- [仪器仪表标准]GBT 21117-2007 磁致伸缩液位计.pdf
文档评论(0)