资源描述:
《栈和队列,数据结构实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划栈和队列,数据结构实验报告 《数据结构》课程实验报告 注:空间不够,可以增加页码。 第三章栈和队列的应用 【实验目的】 1.熟练掌握栈和队列的结构,以及这两种数据结构的特点; 2.能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法; 3.熟练掌握链队列和循环队列的基本运算,并特别注意队列满和队列空的判断条件和描述方法; 第一节知识准备 一、栈: 1.基本概念 栈
2、是一种限定仅在表的一端进行插入与删除操作的线性表。允许进行插入与删除操作的这一端称为栈顶,而另一端称为栈底,不含元素的空表称为空栈,插入与删除分别称进栈与出栈。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 由于插入与删除只能在同一端进行,所以较先进入栈的元素,在进行出栈操作时,要比较后才能出栈。特别是,最先进栈者,最后才能出栈
3、,而最晚进栈者,必最先出栈。因此,栈也称作后进先出 的线性表,简称LIFO表。 栈示意图见图3-1 2.栈的抽象数据类型定义: ADTStack{ 数据对象:D={
4、∈ElemSet,i=1,2,...,n,n>=0} 数据关系:R1={
5、,∈D,i=2,...,n} 基本操作: InitStack(&S)构造一个空栈S StackEmpty(S)判断栈S是否为空 StackLength(S)返回栈S的元素个数,即栈的长度 GetTop(S,&e)取栈S的栈顶元素 Push(&S,e)将元素e入
6、栈 Pop(&S,&e)删除S的栈顶元素并用e返回其值 }ADTStack 3.栈的表示: 栈有两种存储表示方法:顺序存储结构和链式存储结构。 (1)顺序存储结构: #defineSTACK_INIT_SIZE100;//存储空间初始分配量 #defineSTACKINCREMENT10;//存储空间分配增量 typedefstruct{ SElemType*base;//栈底指针目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全
7、感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 SElemType*top;//栈顶指针 intStackSize;//栈的当前容量 }SqStack; (2)链式存储结构: TypedefstructLnode{ ElemTypedata; structLnode*next; }Lnode,*LinkList; 二、队列: 1.与栈相对应,队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端进行删除元素。允许插入的
8、一端称队尾,允许删除的一端称队头。插入与删除分别称为入队与出队。队列示意图见图3-2:────────────── 出队←a1a2??an-1←an进队 ────────────── 队头队尾 图3-2队列 2.队列的抽象数据类型定义: ADTQueue{ 数据对象:D={
9、∈ElemSet,i=1,2,...,n,n>=0} 数据关系:R1={
10、,∈D,i=2,...,n}目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了
11、适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 基本操作: InitQueue(&Q)构造一个空队列Q QueueEmpty(Q)判断队列是否为空 QueueLenght(Q)返回队列Q的元素个数,即队列的长度 GetHead(Q,&e)取队列Q的队头元素,并用e返回 EnQueue(&Q,e)将元素e入队列 DeQueue(&Q,&e)删除非空队列Q的队头元素,并用e返回其值 }ADTQueue 3.队列的表示: 队列有两种表示方法:链
12、队列、循环队列。 链队列的表示: typedefstructQNode{ QElemTypedata; structQNode*next; }QNode,*QueuePtr; typedefstruct{ QueuePtrfront; QueuePtrrear; }LinkQueue; (2)循环队列的表示