第3章栈与队列2次2研讨.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
回 顾 线性表及操作 特殊的线性表——栈 栈的操作原则 栈的顺序存储和链式存储结构 栈的操作 第3章 栈与队列 学习目的要求: 队列的存储结构: 顺序存储——顺序队列 链式存储——链队列 队列的存储结构: 顺序存储——顺序队列 链式存储——链队列 总结 队列的定义 队列的操作特点 队列的存储结构 顺序队列判空、判满条件 队列的入队、出队操作 * 第3章 栈与队列 栈的基本概念和栈的基本运算。 栈在计算机中的应用。 队列的基本概念和队列的基本运算。 队列在计算机中的应用。 3.2 队列 3.2.1 队列的定义 队列(queue)也是一种特殊的线性表。 特殊性:它仅允许在表的一端进行插入,在表的另一端进行删除。 a1 a2 a3 a4 a5 a6 rear rear rear rear rear rear front front front front front front rear 3.2 队列 3.2.1 队列的定义 队列的操作: a1,a2,a3入队, a1,a2出队, a4,a5,a6入队, a3,a4,a5,a6出队。 由于每个元素必然按照进入的次序离队,所以又把队列称为“先进先出”表(First In First Out ,简称FIFO表) 3.2 队列 3.2.1 队列的定义 队尾:允许进行插入操作的一端,由队尾指针rear指示 队空:当队列中没有元素时称为队空 队首:允许进行删除操作的一端,由队首指针front指示 出队:队的删除操作,又称离队 入队:队列的插入操作,又称进队 队列的基本操作可以归纳为以下几种: (1)InitQueue(); 初始化一个空队列Q; (2)GetFront(Q,y); 取队列Q的队头元素,y返回其值,但队列Q状态不变; (3)EnQuene(Q,x); 若队列Q还有空间,将元素x插入到队尾; (4)DelQueue(Q,y);若队列Q不为空,删除队列Q的队头元素,y返回其值; (5)Empty(Q); 判断队列Q是否为空,若为空返回一个真值,否则返回一个假值。 3.2 队列 3.2 队列 3.2.2 队列的顺序存储结构及其运算 1. 顺序队列 队列顺序存储结构称为顺序队列(sequential queue)。顺序队列与顺序表一样,用一个一维数组来存放数据元素。在内存中,用一组连续的存储单元顺序存放队列中各元素。 3.2 队列 3.2.2 队列的顺序存储结构及其运算 1. 顺序队列 #define MAXLEN 10 typedef int elementtype; typedef struct /*队列的顺序存储结构定义*/ { int element[MAXLEN]; /*存放队列元素的数组*/ int front , rear ; /*队首指针 ,队尾指针*/ }SeQueue; 3.2 队列 4 3 2 1 0 front=rear=-1 (1) 初始空队 (2) 元素a入队 (3)元素b,c,d入队 (4)元素a出队 4 3 2 1 0 rear a front=-1 rear=0 4 3 2 1 0 rear d c b a front=-1 rear=3 4 3 2 1 0 rear d c b front=0 rear=3 front 总结: (1)在队列为空的初始状态时, front=rear=-1。 (2)每当向队列插入一个元素,尾指针rear向后移动一位,rear=rear+1。 (3)当rear= MAXLEN-1 时,表示队满; (4)每从队列中删除一个元素时,队首指针也向后移动一位,front=front+1。 (5)入队的所有元素都出队后,队列为空,此时front=rear; 说明: (1)指针的位置:队尾指针指向队尾元素(尾元素下标),队首指针指向队首元素的前一个位置; (2)溢出:当队列满时(rear=MAXLEN-1)再做入队运算必定产生空间溢出,简称“上溢”;当队列空时(front=rear)再做出队运算也将产生溢出,简称“下溢” 3.2 队列 3.2.2 队列的顺序存储结构及其运算 a1 a2 a3 a4 a5 a6 rear rear rear rear rear rear front front front front front front rear 入队、出队操作: 3.2 队列 3.2.2 队列的顺序存储结构及其运算 0 1 2 3 4 5 入队:(1)判满; (2)移动队尾指针 rear++; (3)新元素入队尾 element[re

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档