- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告堆栈和队列
实验报告
实验目的:
掌握堆栈和队列的基本概念;
掌握堆栈和队列的基本操作。
了解产生随机数的相关操作。
实验内容:
1.试编写一个算法,建立一个学生成绩栈,要求从键盘上输入N个数,按照下列要求分别进入不同栈。
若输入的整数x小于60,则进入第一个栈;
若输入的整数x大于等于60并小于100,则进入第二个栈;
若输入的整数x大于100,则进入第三个栈;
分别输出每个栈的内容。
2. 编写一个程序,使用两个链队q1和q2,用来分别存储有计算机随机产生的20个100以内的奇数和偶数,然后每行输出q1和q2中的一个值,即奇数和偶数配对输出,直到任一队列为空为止。
3. 假设一个算术表达式中可以包含三种括号:“(”和“)”,方括号“[”和“]”及花括号“{”和“}”,且这三种括号可按照任意的次序嵌套使用。编写算法判断给定表达式中所含括号是否成对出现。
实验原理:
堆栈是一种只允许在表的一端进行插入和删除运算的线性表。允许插入和删除运算的一端叫栈顶,另一端叫栈底。堆栈进栈的元素都是放在原当前栈顶元素之前而成为新的栈顶元素,每次退栈元素都是原当前栈顶的元素,最后进入堆栈的数据元素总是最先退出堆栈。
队列是一种只允许在表的一端进行插入,而在表的另一端进行删除的特殊线性表。允许进行插入的一端叫队尾,另一端叫队头。队的插入和删除运算分别是在各自的一端进行的,每个元素必须按照进入的次序离队。
链栈和链队的存储结构中,逻辑上相邻的两个元素对应的存储位置是通过指针反应的,不要求物理上的相邻。
1题定义一个结点结构和栈类。栈类中定义构造函数、析构函数、进栈函数、出栈函数、清栈函数,利用各个函数实现对堆栈的操作。
2题定义一个结点结构和队类。队类中定义构造函数、析构函数、进队函数、出队函数、清队函数,利用各个函数实现对链队的操作。
3题定义一个结点结构和栈类。栈类中定义构造函数、析构函数、进栈函数、出栈函数、清栈函数、测试栈空函数,利用各个函数实现对堆栈的操作。
设计思想:
为了实现代码的重复利用,3个程序源代码使用了模板。
1题中定义三个链栈。根据输入的数值按照相关要求调用进栈函数进栈。然后对三个栈进行出栈操作,若栈为空则输出空,非空则输出相应元素。
2题中定义两个队列。随机产生20个100以内的数。根据产生的数值按照相关要求调用进队函数进队。然后分别对两个队列交替调用出队函数出队,直到有一个队列为空为止。
3题中定义一个链栈。根据输入的值进行相应的操作。如果输入的是左括号则放入栈中。如果输入的是右括号,则先进行出栈处理,如果括号配对,则不再处理;如果括号不配对,则分别对相应的左括号和右括号进行进栈处理。如果输入其他数值和符号不进行任何操作。输入#终止输入。最后调用测试栈空函数,如果栈空则括号配对,否则不配对。
实现部分:
源代码:
1题:
#includeiostream.h
#includeassert.h
templateclass t1
struct stacknode{
t1 data;
stacknode *next;};
templateclass t1
class linkstack
{
stacknodet1 *top;
unsigned height;
public:
linkstack();
~linkstack()
{clear();}
void clear();
void push(t1 x);
bool pop(t1 x);
bool isempty()
{return(heighe==0)?true:false;}
};
templateclass t1
linkstackt1::linkstack()
{height=0;
top=NULL;}
//清栈函数
templateclass t1
void linkstackt1::clear()
{t1 x;
while(pop(x));
}
//进栈函数
templateclass t1
void linkstackt1::push(t1 x)
{stacknodet1 *p;
if(top)
{p=new stacknodet1;
assert(p);
p-data=x;
p-next=top;
top=p;
}
else
{top=new stacknodet1;
assert(top);
top-data=x;
top-next=NULL;
}
height++;}
//出栈函数
templateclass t1
bool linkstackt1::pop(t1x)
{stacknodet1 *p;
if(height)
{x=top-data;
p=top;
top=t
您可能关注的文档
- 基于双重空间聚类的土地利用影像分类中的区域合并算法(备份).doc
- 基层党建工作自查自评报告.doc
- 基坑石方爆破施工方案.doc
- 塑性成型中CAE的应用.doc
- 塑料射出成型的问题与改善对策.doc
- 塑料成型中缺陷的现象及解决办法.doc
- 塑料壳体课程设计.doc
- 塑料成型及模具设计论文.doc
- 塑料成型工艺学之塑料注射实验指导书070420.doc
- 塑料成型工艺复习资料.docx
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 2025年江西管理职业学院教师招聘考试笔试备考题库.docx VIP
- 2024中国中信金融资产管理股份有限公司人力资源部(党委组织部)社会招聘笔试模拟试题及答案解析.docx VIP
- 高考英语完型填空汇总.doc VIP
- 合作经营合同(2020).docx VIP
- 关节活动度测定ppt课件.pptx VIP
- 体育教师专业发展计划.doc VIP
- 影视产业概论 教学大纲.docx VIP
- 明星志愿3群星合辑(星光圆舞曲+银色幻想曲)攻略-详细整理版精要.docx
- Q-CR 570-2017 电气化铁路接触网用力矩控制式胶粘型锚栓.docx VIP
- 煤矿机电事故专项应急预案及现场处置方案.pdf VIP
文档评论(0)