Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a9b838e

Browse files
committed
更新队列结构文档
1 parent 05e3133 commit a9b838e

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed

‎assets/doc/JavaScript数据结构与算法(四)队列结构.md

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,33 @@
3434

3535
#### 队列常见的操作
3636

37-
- `enqueue(element)`:向队列尾部添加一个(或多个)新的项。
38-
- `dequeue()`:移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
39-
- `front()`:返回队列中的第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息与 Stack 类的 peek 方法非常类似)。
40-
- `isEmpty()`:如果队列中不包含任何元素,返回 true,否则返回 false。
41-
- `size()`:返回队列包含的元素个数,与数组的 length 属性类似。
42-
- `toString()`:将队列中的内容,转成字符串形式。
37+
- `enqueue(element)`向队列尾部添加一个(或多个)新的项。
38+
- `dequeue()`移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
39+
- `front()`返回队列中的第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息与 Stack 类的 peek 方法非常类似)。
40+
- `isEmpty()`如果队列中不包含任何元素,返回 true,否则返回 false。
41+
- `size()`返回队列包含的元素个数,与数组的 length 属性类似。
42+
- `toString()`将队列中的内容,转成字符串形式。
4343

4444
#### 代码实现
4545

4646
```js
47-
// 使用 ES6 实现
4847
class Queue {
49-
items = [];
5048

51-
// enqueue() 入队,将元素加入到队列中
49+
constructor() {
50+
this.items = [];
51+
}
52+
53+
// enqueue(item) 入队,将元素加入到队列中
5254
enqueue(item) {
5355
this.items.push(item);
5456
}
5557

56-
// dequeue() 出队,从队列中删除前端元素,返回删除的元素
58+
// dequeue() 出队,从队列中删除队头元素,返回删除的那个元素
5759
dequeue() {
5860
return this.items.shift();
5961
}
6062

61-
// front() 查看队列的前端元素
63+
// front() 查看队列的队头元素
6264
front() {
6365
return this.items[0];
6466
}
@@ -73,10 +75,11 @@ class Queue {
7375
return this.items.length;
7476
}
7577

78+
// toString() 将队列中的元素以字符串形式返回
7679
toString() {
77-
let result = "";
80+
let result = '';
7881
for (let item of this.items) {
79-
result += item + "";
82+
result += item + '';
8083
}
8184
return result;
8285
}
@@ -88,23 +91,28 @@ class Queue {
8891
```js
8992
const queue = new Queue();
9093

91-
// 入队操作
92-
queue.enqueue("a");
93-
queue.enqueue("b");
94-
queue.enqueue("c");
95-
queue.enqueue("d");
94+
// enqueue() 测试
95+
queue.enqueue('a');
96+
queue.enqueue('b');
97+
queue.enqueue('c');
98+
queue.enqueue('d');
9699
console.log(queue.items); //--> ["a", "b", "c", "d"]
97100

98-
// 出队操作(先进先出)
101+
// dequeue() 测试
99102
queue.dequeue();
100103
queue.dequeue();
101104
console.log(queue.items); //--> ["c", "d"]
102105

103-
// 查看队头的元素
106+
// front() 测试
104107
console.log(queue.front()); //--> c
105108

109+
// isEmpty() 测试
106110
console.log(queue.isEmpty()); //--> false
111+
112+
// size() 测试
107113
console.log(queue.size()); //--> 2
114+
115+
// toString() 测试
108116
console.log(queue.toString()); //--> c d
109117
```
110118

@@ -117,6 +125,7 @@ console.log(queue.toString()); //--> c d
117125
#### 代码实现
118126

119127
```js
128+
// 利用队列结构的特点实现击鼓传花游戏求解方法的封装
120129
function passGame(nameList, number) {
121130
// 1、new 一个 Queue 对象
122131
const queue = new Queue();
@@ -155,9 +164,10 @@ function passGame(nameList, number) {
155164
#### 测试代码
156165

157166
```js
158-
const names = ["lily", "lucy", "tom", "tony", "jack"];
167+
// passGame() 测试
168+
const names = ['lily', 'lucy', 'tom', 'tony', 'jack'];
159169
const targetIndex = passGame(names, 4);
160-
console.log("击鼓传花", names[targetIndex]); //--> lily
170+
console.log('击鼓传花', names[targetIndex]); //--> lily
161171
```
162172

163173
### 优先队列

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /