数据结构之循环队列

发布时间:2024-11-24 16:05

理解数据结构:了解数组、链表、栈和队列,提升算法思维 #生活技巧# #工作学习技巧# #编程学习路径#

数据结构之循环队列

最新推荐文章于 2024-10-07 14:07:15 发布

菜菜菜菜菜菜鸟丶 于 2017-10-14 17:56:03 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

一.引入

        假设线性表有 n 个数据元素,顺序表要求把表中的所有元素都存储在数组的前 n 个单元。假设队列有 n 个数据元素,顺序存储的队列也应该把队列的所有元素都存储在数组的前 n 个单元。如果把队头元素放在数组中下标为 0 的一端,则入队操作的时间开销仅为 O(1) ,此时的入队操作相当于追加,不需要移动元素;但是出队操作的时间开销为 O(n) ,因为要保证剩下的 n-1 个元素仍然存储在数组的前 n-1 个单元,所有元素都要向前移动一个位置。

        如果放宽队列的所有元素必须存储在数组的前 n 个单元这一条件,只要求队列的元素存储在数组中连续的位置,就可以得到一种更为有效的存储方法,此时入队和出队操作的时间开销都是 O(1) ,因为没有移动任何元素,但是队列的队头和队尾都是活动的,因此,需要设置队头、队尾两个指针,并且约定:队头指针 front 指向队头元素的前一个位置,队尾指针 rear 指向队尾元素。

        但是这种方法有一个新的问题。随着队列的插入和删除操作的进行,整个队列向数组中下标较大的位置移过去,从而产生了队列的 “单向移动性” 。当元素被插入到数组中下标最大的位置上之后,队列的空间就用尽了,尽管此时数组的低端还有空闲空间,这种现象叫做 “假溢出” 。

        解决假溢出的方法是将存储队列的数组看成是头尾相接的循环结构,即允许队列直接从数组中下标最大的位置延续到下标最大的位置延续到下标最小的位置。这通过取模操作很容易实现。队列的这种头尾相接的顺序存储结构成为循环队列。

二.算法设计</

网址:数据结构之循环队列 https://www.yuejiaxmz.com/news/view/238411

相关内容

语言C++之循环结构
数据结构学习笔记之树和森林的存储结构与相关应用
python数据结构练习
《数据结构与算法》—— O(3N)=O(N) ?
【新征程上的铺路人、赋能者、护航员】系列报道之十四 让数据中心“变绿”,助能耗大户“瘦身” ——记联通中讯院数据中心创新团队
栈和队列
面试官问你:程序=算法+数据结构,能深入讲讲吗?
数据结构之算法的时间与空间复杂度
《数据结构与算法分析
设循环队列存储空间为Q(1:50),初始状态为front=rear=50。经过一

随便看看