mirror of
https://github.com/krahets/hello-algo.git
synced 2026-02-12 23:25:44 +08:00
build
This commit is contained in:
@@ -6,7 +6,7 @@ comments: true
|
||||
|
||||
「队列 queue」是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断加入队列的尾部,而位于队列头部的人逐个离开。
|
||||
|
||||
我们把队列的头部称为“队首”,尾部称为“队尾”,把将元素加入队尾的操作称为“入队”,删除队首元素的操作称为“出队”。
|
||||
如下图所示,我们将队列的头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删除队首元素的操作称为“出队”。
|
||||
|
||||

|
||||
|
||||
@@ -299,7 +299,7 @@ comments: true
|
||||
|
||||
### 1. 基于链表的实现
|
||||
|
||||
对于链表实现,我们可以将链表的“头节点”和“尾节点”分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。
|
||||
如下图所示,我们可以将链表的“头节点”和“尾节点”分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。
|
||||
|
||||
=== "LinkedListQueue"
|
||||

|
||||
@@ -312,7 +312,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:基于链表实现队列的入队出队操作 </p>
|
||||
|
||||
以下是用链表实现队列的示例代码。
|
||||
以下是用链表实现队列的代码。
|
||||
|
||||
=== "Java"
|
||||
|
||||
@@ -1188,10 +1188,10 @@ comments: true
|
||||
|
||||
我们可以使用一个变量 `front` 指向队首元素的索引,并维护一个变量 `queSize` 用于记录队列长度。定义 `rear = front + queSize` ,这个公式计算出的 `rear` 指向队尾元素之后的下一个位置。
|
||||
|
||||
基于此设计,**数组中包含元素的有效区间为 [front, rear - 1]**,进而:
|
||||
基于此设计,**数组中包含元素的有效区间为 `[front, rear - 1]`**,各种操作的实现方法如下图所示。
|
||||
|
||||
- 对于入队操作,将输入元素赋值给 `rear` 索引处,并将 `queSize` 增加 1 。
|
||||
- 对于出队操作,只需将 `front` 增加 1 ,并将 `queSize` 减少 1 。
|
||||
- 入队操作:将输入元素赋值给 `rear` 索引处,并将 `queSize` 增加 1 。
|
||||
- 出队操作:只需将 `front` 增加 1 ,并将 `queSize` 减少 1 。
|
||||
|
||||
可以看到,入队和出队操作都只需进行一次操作,时间复杂度均为 $O(1)$ 。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user