Skip to content

Commit 03b5120

Browse files
committed
更新栈结构的文档
1 parent 396c8a2 commit 03b5120

File tree

1 file changed

+40
-31
lines changed

1 file changed

+40
-31
lines changed

assets/doc/JavaScript数据结构与算法(三)栈结构.md

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,24 @@
4646

4747
#### 栈常见的操作
4848

49-
- `push()`添加一个新元素到栈顶位置。
50-
- `pop()`移除栈顶的元素,同时返回被移除的元素。
51-
- `peek()`返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
52-
- `isEmpty()`如果栈里没有任何元素就返回 `true`,否则返回 `false`
53-
- `size()`返回栈里的元素个数。这个方法和数组的 `length` 属性类似。
54-
- `toString()`将栈结构的内容以字符串的形式返回。
49+
- `push()` 添加一个新元素到栈顶位置。
50+
- `pop()` 移除栈顶的元素,同时返回被移除的元素。
51+
- `peek()` 返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
52+
- `isEmpty()` 如果栈里没有任何元素就返回 `true`,否则返回 `false`
53+
- `size()` 返回栈里的元素个数。这个方法和数组的 `length` 属性类似。
54+
- `toString()` 将栈结构的内容以字符串的形式返回。
5555

5656
#### JavaScript 代码实现栈结构
5757

5858
```js
59-
// 使用 ES6 实现
60-
class Queue {
61-
items = [];
59+
// 栈结构的封装
60+
class Stack {
6261

63-
// push() 压栈操作,给栈中添加元素
62+
constructor() {
63+
this.items = [];
64+
}
65+
66+
// push(item) 压栈操作,往栈里面添加元素
6467
push(item) {
6568
this.items.push(item);
6669
}
@@ -87,53 +90,59 @@ class Queue {
8790

8891
// toString() 返回以字符串形式的栈内元素数据
8992
toString() {
90-
let result = "";
93+
let result = '';
9194
for (let item of this.items) {
92-
result += item + " ";
95+
result += item + ' ';
9396
}
9497
return result;
9598
}
9699
}
97100
```
98101

99-
#### 测试栈结构
102+
#### 测试封装的栈结构
100103

101104
```js
102-
const stack = new Queue();
105+
// push() 测试
103106
stack.push(1);
104-
stack.push(22);
105-
stack.push(333);
106-
stack.push(4444);
107-
console.log(stack.items); //--> [1, 22, 333, 4444]
108-
109-
console.log(stack.pop()); //--> 444
110-
console.log(stack.pop()); //--> 333
111-
console.log(stack.peek()); //--> 22
107+
stack.push(2);
108+
stack.push(3);
109+
console.log(stack.items); //--> [1, 2, 3]
110+
111+
// pop() 测试
112+
console.log(stack.pop()); //--> 3
113+
114+
// peek() 测试
115+
console.log(stack.peek()); //--> 2
116+
117+
// isEmpty() 测试
112118
console.log(stack.isEmpty()); //--> false
119+
120+
// size() 测试
113121
console.log(stack.size()); //--> 2
114-
console.log(stack.toString()); //--> 1 22
122+
123+
// toString() 测试
124+
console.log(stack.toString()); //--> 1 2
115125
```
116126

117127
### 栈结构的简单应用
118128

119-
利用栈结构的特点封装十进制转换为二进制的函数
129+
利用栈结构的特点封装实现十进制转换为二进制的方法
120130

121131
### 代码实现
122132

123133
```js
124-
// 十进制转换成二进制
125134
function dec2bin(dec) {
126-
// new 一个 Queue,保存余数
127-
const stack = new Queue();
135+
// new 一个 Stack,保存余数
136+
const stack = new Stack();
128137

129138
// 当不确定循环次数时,使用 while 循环
130139
while (dec > 0) {
131140
// 除二取余法
132141
stack.push(dec % 2); // 获取余数,放入栈中
133-
dec = Math.floor(dec / 2);
142+
dec = Math.floor(dec / 2); // 除数除以二,向下取整
134143
}
135144

136-
let binaryString = "";
145+
let binaryString = '';
137146
// 不断地从栈中取出元素(0 或 1),并拼接到一起。
138147
while (!stack.isEmpty()) {
139148
binaryString += stack.pop();
@@ -146,7 +155,7 @@ function dec2bin(dec) {
146155
#### 测试
147156

148157
```js
149-
// 验证十进制转换二进制方法
150-
console.log(dec2bin(10)); //--> 1010
158+
// dec2bin() 测试
151159
console.log(dec2bin(100)); //--> 1100100
160+
console.log(dec2bin(88)); //--> 1011000
152161
```

0 commit comments

Comments
 (0)