亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【js4agls】數(shù)據(jù)結(jié)構(gòu)JavaScript描述-隊(duì)列篇

Anonymous1 / 1287人閱讀

摘要:隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),與棧不同的是,它操作的元素是在兩端,而且進(jìn)行的是不一樣的操作。

隊(duì)列(Queue)是一種先進(jìn)先出(First-In-First-Out, FIFO)的數(shù)據(jù)結(jié)構(gòu),與棧不同的是,它操作的元素是在兩端,而且進(jìn)行的是不一樣的操作。向隊(duì)列的隊(duì)尾加入一個元素叫做入隊(duì)列(enQueue),向隊(duì)列的隊(duì)首刪除一個元素叫做出隊(duì)列(delQueue).

ADT
Queue
---
length,屬性,隊(duì)列長度
dataStore,屬性,存儲數(shù)據(jù)
enQueue,方法,入隊(duì)列
delQueue,方法,出隊(duì)列
empty,方法,清空隊(duì)列
front,方法,獲得隊(duì)首元素
rear,方法,獲得隊(duì)尾元素
print,方法,打印隊(duì)列
JavaScript描述
// 構(gòu)造函數(shù)
function Queue () {
    this.length = 0;
    this.dataStore = [];
}
// 原型核心方法
Queue.prototype = {
    constructor: Queue,
    enQueue: function (element) {
        // 存儲元素并使隊(duì)列長度加1
        this.dataStore[this.length++] = element;
    },
    delQueue: function () {
        var res = this.dataStore[0], //取得隊(duì)首元素
            i;

        // 當(dāng)隊(duì)列不為空
        if (res !== undefined) {
            
            // 這里盡量避免使用js語言特性來實(shí)現(xiàn)
            // 取出隊(duì)首元素,并讓隊(duì)列后方元素向前移動,隊(duì)列長度減一
            // js數(shù)組其實(shí)已經(jīng)實(shí)現(xiàn)了隊(duì)列的方法,刪除隊(duì)首shift
            if (this.length > 1) {
                for (i = 0; i < this.length - 1; i++) {
                    this.dataStore[i] = this.dataStore[i + 1];
                }
                this.dataStore.length -= 1;
            } else {
                // 當(dāng)只有一個元素時,出隊(duì)列后數(shù)組為空
                this.dataStore = [];
            }
            this.length -= 1;
        }

        return res;
    },
}
// 其他方法
empty: function () {
    this.dataStore.length = 0;
    this.length = 0;
},
front: function () {
    return this.dataStore[0];
},
rear: function () {
    return this.dataStore[this.length - 1];
},
print: function () {
    for (var i = 0; i < this.length; i++) {
        console.log(this.dataStore[i] + "
");
    }
}
測試
var q = new Queue();
q.enQueue("jiavan");
q.enQueue("jiavan2");
q.enQueue("jiavan3");
q.enQueue("jiavan4");
q.print();
q.delQueue(); // jiavan
q.length; // 3
q.front(); //jiavan2
q.rear();// jiavan4
q.empty();
q.dataStore; //[]

系列文章原文地址https://github.com/Jiavan/js4algs GitHub repo上有源碼和更好的閱讀體驗(yàn),若有錯誤歡迎發(fā)PR,若對你有所幫助也歡迎star!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/79333.html

相關(guān)文章

  • js4agls數(shù)據(jù)結(jié)構(gòu)JavaScript描述-鏈表

    摘要:我們可以使用鏈表這種數(shù)據(jù)結(jié)構(gòu),來刪除元素的時候而不必讓后面的元素向前移動。一個節(jié)點(diǎn)的上一個節(jié)點(diǎn)稱為它的前驅(qū),下一個節(jié)點(diǎn)即指向的節(jié)點(diǎn)稱為它的后繼節(jié)點(diǎn),在簡單的單向鏈表中,第一個節(jié)點(diǎn)稱為頭節(jié)點(diǎn)它沒有前驅(qū)節(jié)點(diǎn),最后一個節(jié)點(diǎn)沒有后繼節(jié)點(diǎn)為。 之前我們用數(shù)組的方式來實(shí)現(xiàn)了隊(duì)列,是否還記得在出隊(duì)列后有這樣一段代碼: for (i = 0; i < this.length - 1; i++) { ...

    Xufc 評論0 收藏0
  • js4agls數(shù)據(jù)結(jié)構(gòu)JavaScript描述-棧

    摘要:列表項(xiàng)目棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),我們所能操作的都是棧頂元素,刪除一個棧頂元素叫做出棧或者彈棧,添加一個元素叫做入?;蛘邏簵J紫葮?gòu)建我們的抽象數(shù)據(jù)類型棧頂元素位置保存數(shù)據(jù)的數(shù)組壓棧出棧查看棧頂元素清空棧棧的長度輸出棧元素描述模擬輸出 列表項(xiàng)目 棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),我們所能操作的都是棧頂元素,刪除一個棧頂元素叫做出?;蛘邚棗#砑右粋€元素叫做入棧或者壓棧. show...

    psychola 評論0 收藏0
  • Nodejs高性能原理(上) --- 異步非阻塞事件驅(qū)動模型

    摘要:使用了一個事件驅(qū)動非阻塞式的模型,使其輕量又高效。的包管理器,是全球最大的開源庫生態(tài)系統(tǒng)。按照這個定義,之前所述的阻塞,非阻塞,多路復(fù)用信號驅(qū)動都屬于同步。 系列文章 Nodejs高性能原理(上) --- 異步非阻塞事件驅(qū)動模型Nodejs高性能原理(下) --- 事件循環(huán)詳解 前言 終于開始我nodejs的博客生涯了,先從基本的原理講起.以前寫過一篇瀏覽器執(zhí)行機(jī)制的文章,和nodej...

    yy736044583 評論0 收藏0
  • 文章教會你Event loop——瀏覽器和Node

    摘要:如果沒到毫秒,那么階段就會跳過,進(jìn)入階段,先執(zhí)行的回調(diào)函數(shù)。參考文檔什么是瀏覽器的事件循環(huán)不要混淆和瀏覽器中的定時器詳解瀏覽器和不同的事件循環(huán)深入理解事件循環(huán)機(jī)制篇中的執(zhí)行機(jī)制 最近對Event loop比較感興趣,所以了解了一下。但是發(fā)現(xiàn)整個Event loop盡管有很多篇文章,但是沒有一篇可以看完就對它所有內(nèi)容都了解的文章。大部分的文章都只闡述了瀏覽器或者Node二者之一,沒有對比...

    Leck1e 評論0 收藏0
  • 關(guān)于修改DOM是異步還是同步的問題

    摘要:還請同學(xué)跟我多多探討關(guān)于修改是異步還是同步的問題先來看代碼上述代碼的結(jié)果完全就是同步的表現(xiàn),如果是異步的話,毫無疑問,第一個下的每個內(nèi)容都應(yīng)該是,第二個也應(yīng)該是。 回 @bf 同學(xué) 本篇文章不是筆記也不是心得,而是關(guān)于一個問題的討論,問題最初出現(xiàn)于https://segmentfault.com/q/1010000005630545?_ea=903562 由于 @bf 同學(xué)不方便...

    qingshanli1988 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<