JS數據結構初識(一)-棧

1、定義

棧是一種聽從後進先出(LIFO)原則的有序集合。新添加的或待刪除的元素都保存在棧的末尾,稱做棧頂,另外一端就叫棧底。在棧裏,新元素都靠近棧頂,舊元素都接近棧底。 棧也被用在編程語言的編譯器和內存中保存變量、方法調用等。典型的有函數調用。git

1.1 棧的建立

// 後進先出
    function Stack() {
        const items = [];
        this.push = (...ele) => items.push(...ele);
        this.pop = () => items.pop();
        this.peek = () => items[items.length-1];
        this.isEmpty = () => !items.length;
        this.size = () => items.length;
        this.clear = () => items = [];
        this.print = () => console.log(items);
    }

    const stack = new Stack();
    stack.push(1,2,3,4);
    stack.print();
複製代碼

1.2 進制轉換

// 任意進制
    function baseTransform(decNumber, base) { // 被除數
        const remStack = new Stack();
        let rem; // 餘數
        const digits = '0123456789ABCDEF';
        let result = '';
        while (decNumber > 0) {
            rem = decNumber % base;
            remStack.push(rem);
            decNumber = Math.floor(decNumber / base);
        }

        while(!remStack.isEmpty()) {
            result += digits[remStack.pop()];
        }
        console.log('result => ',result);
        return result;
    }
    baseTransform(10, 2); // => 1010
複製代碼

2、總結

棧是最簡單的數據結構,遵循的是後進先出的原則。編程

相關文章
相關標籤/搜索