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 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-
conststack=newQueue();
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)

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