Javascript「スタック」

スタックは後入れ先出しのデータ構造ですが、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, "")

おすすめ

転載: blog.csdn.net/weixin_47979372/article/details/124440405