数据结构之队列
发布时间:2024-12-10 11:56
理解数据结构:了解数组、链表、栈和队列,提升算法思维 #生活技巧# #工作学习技巧# #编程学习路径#
队列队列是只允许在一端进行插入,在另一端进行删除的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO,允许插入的一端叫队尾,允许删除的一端叫队头。
线性表有顺序存储和链式存储,栈是线性表,所以有这两种存储方式,同样,队列作为特殊的线性表,也有两种存储方式。
队列的顺序存储结构:假设我们有一个n个元素队列,则顺序存储的队列需要一个大于n的数组,并且把队列的元素存储到数组的前n个单元里,数组下标为0的是队头,入队操作就是在队尾添加一个元素,因为不需要移动任何元素,时间复杂度为O(1),如下图:
队列元素的出列是在队头,也就是下标为0的地方,那么意味着队列中的所有元素都要往前移动,保证队头不为空,时间复杂度为O(n),如下图:
上面说到了出列需要把所有元素都往前移,那么我们如果不移动可不可以呢?
如果我们去掉了队列的元素必须存储在数组前n个单元这一条件,也就是队头不一定需要在下标为0的地方,那么出队的性能就大大增加了,如下图:
为了避免只有一个元素时,队头和队尾重合使处理变得麻烦,所以引入两个指针,front指向队头,rear指向队尾元素的下一个位置,这样front和rear相等时,这个时候就是空队列。假设长度为5的数组,初始状态空队列,front和rear指针均指向下标为0的位置,然后入队a1,a2,a3,a4, front指针依然指向 下标为0的地方,而rear指针指向下标为4的位置。如下图:
网址:数据结构之队列 https://www.yuejiaxmz.com/news/view/433696
下一篇:DooTask:轻量级任务管理工
相关内容
数据结构之循环队列python数据结构练习
数据结构学习笔记之树和森林的存储结构与相关应用
R语言:数据结构
《数据结构与算法》—— O(3N)=O(N) ?
数据结构之算法的时间与空间复杂度
《数据结构与算法分析
Pascal之父——Nicklaus Wirth——算法+数据结构=程序
栈和队列
大数据测试数据构造工具