北京理工大学数据结构实验报告二 堆栈和队列

北京理工大学数据结构实验报告二 堆栈和队列

ID:40814763

大小:88.50 KB

页数:14页

时间:2019-08-08

北京理工大学数据结构实验报告二  堆栈和队列_第1页
北京理工大学数据结构实验报告二  堆栈和队列_第2页
北京理工大学数据结构实验报告二  堆栈和队列_第3页
北京理工大学数据结构实验报告二  堆栈和队列_第4页
北京理工大学数据结构实验报告二  堆栈和队列_第5页
资源描述:

《北京理工大学数据结构实验报告二 堆栈和队列》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构实验报告(二)实验二堆栈和队列一、实验目的和要求:1、掌握堆栈和队列的基本概念;2、掌握堆栈和队列的基本操作。二、实验原理:1、堆栈的定义:堆栈是一种只允许在表的一端进行插入和删除运算的特殊的线性表。允许进行插入和删除运算的一端称为栈顶,另一端称为栈底,当链表中没有元素时,称为空栈。2、堆栈的插入运算称为入栈或者进栈,删除运算称为出栈或者退栈,栈顶的当前位置是动态的,标识栈顶当前位置的指针称为栈顶指针。每次进栈的数据元素都放在原当前栈顶元素之前成为新的栈顶元素,每次退栈的数据元素都是原当前栈顶元素,最后进入堆栈的数据元素总是最先退出堆栈。3、堆栈的存储结构:(

2、1)顺序存储结构:栈的顺序存储结构称为顺序栈。顺序栈的本质是顺序表的简化。(2)链式存储结构:栈的链式存储结构称为链栈,通常用单链表示。链栈的插入和删除操作只需处理栈顶的情况。4、队列的定义:队列是允许在表的一端进行插入,而在表的另一端进行删除的特殊线性表。允许进行插入的一端称为队尾,允许进行删除的一端称为队头。队列的插入运算称为进队或者入队,删除运算称为出队或者离队,因此队列又称为先进先出表。1、队列的存储结构队列的存储结构同线性表一样,可以分为顺序结构和链式结构。(1)顺序存储结构:用顺序存储结构存储队列称为顺序队列。顺序队列会出现假溢出问题,解决办法是用首尾相接

3、的书顺序存储结构,称为循环队列。在队列中,只要涉及队头或者队尾指针的修改都要对其求模。(2)链式存储结构:用链式存储结构存储的队列称为链队列。链队列的基本操作的实现基本上也是单链表操作的简化。通常附设头结点,并设置队头指针指向头结点,队尾指针指向终端结点。插入数据时只考虑在链队列的尾部进行,删除数据时只考虑在链队列的头部进行。一、实验内容:1、试编写一个算法,建立一个学生成绩栈,要求从键盘上输入N个整数,按照下列要求分别进入不同的栈。(1)若输入的整数X小于60,则进入第一个栈;(2)若输入的整数x大于等于60并小于100,则进入第二个栈;(3)若输入的整数x大于10

4、0,则进入第三个栈;(4)分别输出每个栈的内容。2、编写一个程序,使用两个链队q1和q2,用来分别存储由计算机产生的20个100以内的奇数和偶数,然后每行输出q1和q2的一个值,即奇数和偶数配对输出,直到任一队列为空为止。1、假设一个算术表达式中可以包括三种括号:“(”和“)”,方括号“[”和“]”及花括号“{”和“}”,且这三种括号可以任意顺序的嵌套使用。编写算法判断给定表达式中所包含的括号是否配对出现。四.编程思想:P165.2首先定义一个堆栈类,采用顺序存储结构。在类中定义*elements用来存放数据。然后定义测试主函数。在主函数中,定义三个堆栈对象,将三类数

5、据根据要求分别压入这三个对象中,最后将它们输出。P166.7首先定义链式队列结点类,结点类的data变量用于存放数值;然后定义链式队列类,类中的函数可实现对数据的存取;使用两个链队q1和q2,分别存放奇数和偶数,定义一个函数DeleteQueue(),使得每一行输出一个奇数和一个偶数,直到任一队列空为止。P166.8采用顺序栈.用一个字符串表示一个表达式,从左向右依次扫描各个字符1.定义三个栈h(n),p(n),l(n).三个计数器x1,x2,x3.2.for(inti=0;i

6、)3.当遇到“]”“}”“)”时,分别判断相应的堆栈是否为空,若不为空,则取出栈顶元素,相应的计数器自加一,统计出成对的括号。程序代码:P165.2#include#include#include"iostream"usingnamespacestd;classList;typedefintElemType;classSeqStack{//堆栈的数据成员unsignedheight;inttop;intmaxsize;//栈的最大元素个数ElemType*elements;//元素存储空间public:SeqStack(intsiz

7、e);//构造函数,size用来设置栈的大小~SeqStack(){delete[]elements;}//析构函数voidPushStack(ElemTypex);//进栈函数,将元素x压入栈中ElemTypePopStack(ElemTypex);//出栈函数,将栈顶元素值放入x中voidClearStack(){top=-1;}//清栈函数,用于释放所占的内存空间boolIsFullStack(){returntop==maxsize-1;}//判断栈是否为满boolIsEmptyStack();//判断栈是否为空voidPrintStack(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。