- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章-4 队列精要
* * 2.2 栈和队列 * * 2.2.2 队列(Queue) 定义 队列是只允许在一端删除,在另一端插入的线性表。 允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。 特性:先进先出(First In First Out:FIFO) 逻辑示意图 a1 a2 …… an 入队列 出队列 队尾rear 队头front * * 队列的基本概念 队头(front):允许删除(出队)的一端。 front指向队头元素的前一个位置 队尾(rear):允许插入(入队)的一端。 Rear指向队尾元素 空队列:队列中没有元素。 进队:队列的插入运算,插入对尾元素。 出队:队列的删除运算,删除队首元素。 * * 入队出队的示意图 * * 队列的入队出队 进队时 队尾指针先加1:rear = rear + 1; 再将新元素按rear指示位置加入。 出队时 队头指针先加1:front = front + 1; 再将下标为front的元素取出。 队满时再进队将溢出出错(错误的情况);队空时再出队将以队空处理(程序控制转向的条件)。 * * 队列的基本运算 入队 出队 取队头元素 置空队列 判队列是否为空 在不同的存储方式下,实现上述运算的方法和过程是不同的。 * * 队列的顺序存储结构—顺序队列 顺序队列: 队列的顺序存储结构,用一组连续的存储单元依次存放队列中的元素。 顺序队列的类型说明: typedef struct queue { elemtype data[MaxSize]; int f,r; //队首 队尾 }sequeue; * * 顺序队列运算时的头、尾指针变化 Sq-f 3 2 1 0 空队列 Sq-r 3 2 1 0 A、B相继入队 Sq-r Sq-f A B 3 2 1 0 A、B相继出队 Sq-r Sq-f 3 2 1 0 C、D相继入队 Sq-r Sq-f C D * * 指针变化的小结 队头指针:f总指向当前队头元素的前一个位置。 队尾指针:r指向当前队尾元素的位置。 初始(空)状态:f=r=-1 操作过程中空:f = r ? -1 入队运算: sq-r++; //尾指针加1 sq-data[sq-r]=x; //x入队 出队运算:sq-f++; //头指针加1 * * 指针变化的小结 队列长度:(sq-r)-(sq-f) 队空:(sq-r)=(sq-f) 下溢:队空时再作出队操作。 队满:(sq-r)-(sq-f)= m 上溢:队满时再作入队操作。 当sq-r = MaxSize – 1时:队列可能为满,也可能不满! * * 指针变化的小结 队上溢: 真上溢(r-f = m):队列真正满时再入队。 假上溢:r已指向队尾,但队列前端仍有空位置。 解决假上溢的方法: 方法一:每次删除队头一个元素后,把整个队列往前移一个位置(造成时间浪费)。 方法二:循环队列 * * 循环队列 将所用的数组sq-data[m]设想为首尾相接的循环数组(即:data[0]连在data[m-1]之后)。 f a0 an …… r 0 MaxSize-1 …… * * 循环队列 循环意义下的队列入队: 若尾指针r等于向量的上界,再入队,令尾指针等于向量的下界,即:在循环意义下的尾指针的加1操作可描述为: If(sq-r+1 = Maxsize-1) sq-r=0; else sq-r++; 利用“模运算”,则下述运算可描述为: 入队:sq-r=(sq-r+1)%m 出队:sq-f=(sq-f+1)%m 队空:sq-r=(sq-f) 队满:(sq-r+1)%m=sq-f * * 循环队列 初始状态:空队列 sq-f = sq-r = MaxSize–1; 操作过程中队列空: Sq-f = sq-r; f a0 ai …… r 0 MaxSize-1 …… an-1 在右图中,再入队一个元素,下式将成立: sq-r = sq-f表示队列满 …… * * 循环队列队满队空 为了解决 f = r是队空队满的问题,有规定如下: 队尾指针追上头指针作为队满标志,即: sq-f = sq-r +1 队尾等于队头指针作为队空标志,即: sq-f = sq-r 在上述规定下,当队满时,尚有一个空单元。 * * 循环队列队满队空 考虑到循环队列的指针翻转,队空队满的完整条件如下: 队空:sq-f == sq-r; 队满:sq-f == (sq-r + 1)%MaxSize; 或者: 队空:(sq-f - sq-r)%MaxSize = 0; 队满:(sq-f - sq-r)%MaxSize = 1; 另一种方法: 用
您可能关注的文档
- 第2章 线性控制系统的数学模型精要.ppt
- 人教版四年级上册第三单元三位数乘两位数_速度、时间、路程之间的关系_教学课件_书本54页例3要点.ppt
- 人教版四年级语文上册《语文园地五》(完整精品课件)ppt要点.ppt
- 第2章 线性尺寸精度设计精要.ppt
- 人教版四年级数学下括号要点.ppt
- 第2章 网络操作系统的安装与基本管理精要.ppt
- 第2章 职业素养精要.pptx
- 第2章 网页设计基础语言HTML与XHTML精要.ppt
- 人教版四年级趵突泉要点.pptx
- 第2章 药物代谢动力学精要.ppt
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
原创力文档


文档评论(0)