[フロントエンドインタビューの質問]スタックデータ構造を実装します。インターフェースは次のとおりです。このクラスのスタック、ポップ、ポップ、およびスタックの長さ(フロントエンドインタビューの質問の送信元アドレスを含む)を実装してください。継続的に更新)

スタックデータ構造を実装します。インターフェースは次のとおりです。このクラスのpush、pop、pop、stacklengthを実装してください。

1.はじめに

1.スタックにプッシュします

首先介绍一下push和unshift的使用

push(着信データを最後までプッシュ):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
console.log(fruits);//["Banana", "Orange", "Apple", "Mango","Kiwi"]

unshift(unshiftから入ってくるデータは一番上に配置されます):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Kiwi");
console.log(fruits);//["Kiwi","Banana", "Orange", "Apple", "Mango"]
因为一般是把[0]——也就是第一个进来的数作为栈底,所以选择push将后进入的数作为栈顶放在后面。

コード:

//入栈方法(加到栈顶)
in(value) {
    
    
    //一般[0]的位置时栈底
    this.items.push(value)
}

2.ポップアウト

首先介绍一下pop和shift的使用
pop(配列の最後の項目を削除):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
console.log(fruits);//["Banana", "Orange", "Apple"]

シフト(配列の最初の項目を削除):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift();
console.log(fruits);//["Orange", "Apple", "Mango"]
因为一般是把[0]——也就是第一个进来的数作为栈底,所以选择pop将最后一个数删除。

コード:

//出栈(遵循后入(栈顶)先出的原则)
out() {
    
    
    return this.size() > 0 ? this.items.pop() : null;
}

3.スタックの一番上

スタックの最上位、配列の全長-1の位置にある数値を参照しているため、この数値を
コードに返すだけで済みます。

//弹栈(取到栈顶的值,不删除)
top() {
    
    
    return this.size() > 0 ? this.items[this.size() - 1] : null;
}

4.スタックの長さ

スタックの長さは、配列の全長を指し、長さを使用して取得できます。

コード:

//计算栈的长度
size() {
    
    
    return this.items.length
}

第二に、全体的なコード

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>栈数据结构的实现</title>
</head>

<body>
    <script>
        class Stack {
      
      
            //构造器
            constructor() {
      
      
                this.items = [];
            }
            //入栈(加到栈顶)
            in(value) {
      
      
                //一般[0]的位置时栈底
                this.items.push(value)
            }
            //出栈(遵循后入(栈顶)先出的原则)
            out() {
      
      
                return this.size() > 0 ? this.items.pop() : null;
            }
            //弹栈(取到栈顶的值,不删除)
            top() {
      
      
                return this.size() > 0 ? this.items[this.size() - 1] : null;
            }
            //计算栈的长度
            size() {
      
      
                return this.items.length
            }
        }

		//实例化对象
        let stack = new Stack();
        stack.in(0);
        stack.in(1);
        stack.in(2);
        console.log(stack.items)// [0, 1, 2]
        stack.out();
        console.log(stack.items)// [0, 1]
        console.log(stack.top())// 1
        console.log(stack.size())// 2
    </script>
</body>

</html>

すべてのフロントエンドインタビューの質問の送信元アドレス:https://gitee.com/daiwanghao/front-end-interview-questions.git

以上がスタックデータ構造の実装内容です。「フロントエンドインタビューの質問」欄にご注意ください。
の通常のプロジェクトに共通する問題筆記試験の知識を共有し、CSDNであなたと面接し、一緒に進歩します。さあ。

おすすめ

転載: blog.csdn.net/weixin_46318413/article/details/122523233