使用JavaScript淺談隊列


什么是隊列?

隊列可以看做是一個單向通道,先進去的元素,必定會先出來(不考慮優先級的情況下)FIFO first-in-first-out,隊列的元素從隊尾進入,從隊頭出來。

抽象隊列的數據結構類型

size(屬性):隊列中的元素個數

dataSource(屬性):隊列中存儲元素的數組

enqueue(方法):向隊尾添加一個元素

dequeue(方法):刪除隊頭元素

front(方法):讀取隊頭元素

back(方法):讀取隊尾元素

length(方法):返回隊列元素個數

clear(方法):清空隊列

empty(方法):判斷隊列是否為空

toString(方法):顯示所有的隊列元素

有了隊列的抽象數據結構類型,我們可以得到一下的隊列類:

class Queue {
    constructor() {
        this.dataSource = [];
        this.size = 0;
    }
    // enqueue:向隊列尾增加元素
    enqueue(element) {
        this.dataSource.push(element);
        this.size++;
    }
    // dequeue: 刪除隊頭元素
    dequeue() {
        if (this.empty()) {
            this.size--;
            return this.dataSource.shift();
        }
    }
    // empty: 判斷是否為空隊列
    empty() {
        if (this.size > 0) {
            return true;
        }
        return false;
    }
    // front: 返回隊頭元素
    front() {
        if (this.empty()) {
            return this.dataSource[0];
        }
    }
    // back: 返回隊尾元素
    back() {
        if (this.empty()) {
            return this.dataSource[this.size - 1];
        }
    }
    // length: 返回隊列元素總數
    length() {
        return this.size;
    }
    // clear: 清空隊列
    clear() {
        this.dataSource.length = 0;
        this.size = 0;
    }
    // toString: 返回隊列所有元素
    toString() {
        return this.dataSource;
    }
}

有了這個基本的隊列類,我們可以在上面進行擴展,去解決實際開發中所遇到的問題。

 源碼和案例地址:https://gitee.com/mvc_ydb/data-structure/blob/master/queue.js


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM