コンテンツ
スタックは後入れ先出しのデータ構造ですが、Javascript言語にはそのような構造はありませんが、配列のプッシュおよびポップ操作によって実装できます。
1.スタック構造を実装します
const stack = []
stack.push(1)
stack.push (2)
const item1 = stack.pop()
const item2 = stack.pop()
2.アプリケーションシナリオ
- 10進数から2進数
10進数から2進数に変換するには、スタックを使用して10進数を2で割って数値をプッシュし、余りを取り、LIFOを使用して格納されている数値(2進数)をポップアウトします。
- 有効な括弧
左角かっこプッシュと右角かっこポップの方法によると、有効な角かっこを表すために最終的な配列は空です。
- 関数呼び出しスタック
最後に呼び出された関数が最初に実行されます
。JSパーサーはスタックを使用して関数の呼び出しシーケンスを制御します。const func1 = () => { func2() } const func2 = () => { func3() } const func3 = () => { } func1() // 先执行func1函数,再执行func2函数,再执行func3函数 //先执行完func3函数,再执行完func2函数,再执行完func3函数 // push func1 func2 func3 // pop func3 func2 func1
3.練習
ES6、クラスStackでスタックを実装する
class Stack {
constructor() {
this.stack = []
this.top = 0
}
push(item) {
this.stack.push(item)
this.top ++
}
pop() {
this.top--;
return this.stack.pop()
}
peek() {
return this.stack[this.top - 1]
}
size() {
return this.top
}
clear() {
this.stack = []
}
}
10進数100を2進数に変換するには、スタックデータ構造を使用してください
function toTwo(num) {
var stack = []
while (num !== 0) {
stack.push(num % 2)
num = parseInt(num / 2)
}
return stack.reverse()
}
var res = toTwo(100).toString().replace(/,/g, "")