前言
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。这种特性使得队列具有“先进先出”(First In First Out,简称FIFO)的特点,即最早进入队列的元素将最先被移除。队列中,进行插入操作的端称为队尾(rear),进行删除操作的端称为队头(front)。当队列中没有元素时,它被称为空队列。队列的实现方式有多种,包括但不限于使用数组、链表或栈。
实现原理
队列是一种特殊的线性表,它遵循先进先出(FIFO)的原则。队列允许在表的一端插入元素(队尾),在另一端删除元素(队头)。队列的实现可以基于不同的数据结构,包括顺序存储结构和链式存储结构。
-
顺序存储结构:
- 数组是实现队列顺序存储结构的一种方式。队列的队头和队尾可以通过两个指针(front和rear)来表示。当元素加入队列时,它被添加在队尾;当元素从队列中移除时,队头元素被删除。
- 为了避免数组索引溢出和空间浪费,可以采用循环队列的方式。循环队列通过取模运算来实现数组的循环利用,有效地解决了假溢出问题,同时保持了入队和出队的O(1)时间复杂度。
-
链式存储结构:
- 链式存储结构通过节点之间的链接来实现队列。每个节点包含数据元素和指向下一个节点的指针。入队操作在链表的末尾添加新节点,出队操作则删除链表的头节点。
-
PriorityQueue:
- PriorityQueue的实现基于二叉堆