国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

數(shù)據(jù)結(jié)構(gòu)JavaScript描述(一)

scq000 / 2987人閱讀

摘要:本文主要用實(shí)現(xiàn)一些常用的數(shù)據(jù)結(jié)構(gòu),并帶上相應(yīng)的講解,本系列中的所有代碼并非所有都由本人編寫,但出于學(xué)習(xí)目的,在此分享出來(lái)并帶上一定的解釋,方便大家學(xué)習(xí)。相應(yīng)的數(shù)據(jù)結(jié)構(gòu)有隊(duì)列棧單鏈表雙向鏈表二叉樹相應(yīng)代碼已上傳地址。

本文主要用JavaScript實(shí)現(xiàn)一些常用的數(shù)據(jù)結(jié)構(gòu),并帶上相應(yīng)的講解,本系列中的所有代碼并非所有都由本人編寫,但出于學(xué)習(xí)目的,在此分享出來(lái)并帶上一定的解釋,方便大家學(xué)習(xí)。

相應(yīng)的數(shù)據(jù)結(jié)構(gòu)有:

隊(duì)列

單鏈表

雙向鏈表

二叉樹

相應(yīng)代碼已上傳GitHub地址:https://github.com/HolyZheng/...   。

本文先給大家介紹隊(duì)列和棧,其他的在后續(xù)的文章中給大家?guī)?lái)。

隊(duì)列

隊(duì)列 的概念應(yīng)該不用多說(shuō)了吧,一句話:先進(jìn)先出(first in first out),就跟我們平時(shí)排隊(duì)一樣,先排隊(duì)的就先到。

代碼實(shí)現(xiàn):

/**
 *       使用javascript實(shí)現(xiàn)一個(gè)隊(duì)列
 *       具有enqueue、dequeue、show三個(gè)方法
 */
function Queue () {
    this._oldestIndex = 1;
    this._newestIndex = 1;
    this._storage = {};
}

Queue.prototype.size = function () {
    return this._newestIndex - this._oldestIndex;
}

Queue.prototype.enqueue = function (data) {
    this._storage[this._newestIndex] = data;
    this._newestIndex++;
}

Queue.prototype.dequeue = function () {
    var oldestIndex = this._oldestIndex,
        newestIndex = this._newestIndex,
        deletedData;
    if (oldestIndex !== newestIndex) {
        deletedData = this._storage[oldestIndex];
        delete this._storage[oldestIndex];
        this._oldestIndex++;
        return deletedData;
    }
    return;
}

Queue.prototype.show = function () {
    console.log(this._storage);
}

這個(gè)隊(duì)列主要有三個(gè)方法:enqueue、dequeue、show,分別為入隊(duì),出隊(duì),查看隊(duì)列。
enqueue跟show都很簡(jiǎn)單,相信這里不用我來(lái)講,大家一看就能懂,所以就講一下dequeue函數(shù):

enqueue 函數(shù):

Queue.prototype.dequeue = function () {
    var oldestIndex = this._oldestIndex,  //記錄隊(duì)頭位置
        newestIndex = this._newestIndex,  //記錄隊(duì)尾位置
        deletedData;                      //記錄要?jiǎng)h除的數(shù)據(jù),并返回。
    if (oldestIndex !== newestIndex) {
        deletedData = this._storage[oldestIndex];
        delete this._storage[oldestIndex];
        this._oldestIndex++;
        return deletedData;
    }
    return;
}

刪除元素的時(shí)候,只需要用先判斷隊(duì)列是否為空了,如果不空就用 delete 方法把相應(yīng)的對(duì)象屬性刪除,然后對(duì)頭位置加一就行了。

跟隊(duì)列就剛好相反,“先進(jìn)后出”,就像往桶里放球,后面放的在上方,可以先拿到。

代碼實(shí)現(xiàn):

/**
 *       使用javascript實(shí)現(xiàn)一個(gè)棧
 *       具有push、pop、show三個(gè)方法
 */
function Stack () {
    this._size = 0;
    this._storage = {};
}


Stack.prototype.push = function (data) {
    var size = ++this._size;
    this._storage[size] = data;
}

Stack.prototype.pop = function () {
    var size = this._size;
    var deletedData;
    if (size) {
        deletedData = this._storage[size];
        delete this._storage[size];
        this._size--;
        return deletedData;
    }
}

Stack.prototype.show = function () {
    var len = 1;
    while (len <= this._size) {
        console.log(this._storage[len]);
        len++;
    }
}

var stackA = new Stack();

這個(gè) 棧 主要有三個(gè)方法:push、pop、show 三個(gè)方法,同樣我們挑一個(gè)相對(duì)較難的方法來(lái)講一下:

Stack.prototype.pop = function () {
    var size = this._size; //指向棧頭
    var deletedData;
    if (size) {
        deletedData = this._storage[size];
        delete this._storage[size];
        this._size--;
        return deletedData;
    }
}

pop 元素的時(shí)候,先判斷棧是否為空,如果不為空的話,就 delete 掉棧頭的元素,即最上方最先拿到的元素,然后this._size --指向下一個(gè)元素。

總結(jié)

隊(duì)列,先進(jìn)先出,就像我們平時(shí)排隊(duì)

棧,先進(jìn)后出,就像往桶里放球,后放的在上方,可以先拿到

因?yàn)殛?duì)列和棧相對(duì)簡(jiǎn)單,所以本文篇幅比較短,下一篇文章我會(huì)為大家?guī)?lái)難度高一點(diǎn)的 單鏈表雙向鏈表 的代碼實(shí)現(xiàn)和講解,文章也會(huì)相對(duì)詳細(xì),歡迎大家關(guān)注。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90339.html

相關(guān)文章

  • React.js 小書 Lesson6 - 使用 JSX 描述 UI 信息

    摘要:上面的代碼小書經(jīng)過(guò)編譯以后會(huì)變成小書會(huì)構(gòu)建一個(gè)對(duì)象里描述你結(jié)構(gòu)的信息,包括標(biāo)簽名屬性還有子元素等。第二個(gè)原因是,有了這樣一個(gè)對(duì)象。負(fù)責(zé)把這個(gè)用來(lái)描述信息的對(duì)象變成元素,并且渲染到面上。下一節(jié)中我們將介紹小書組件的方法。 React.js 小書 Lesson6 - 使用 JSX 描述 UI 信息 本文作者:胡子大哈本文原文:http://huziketang.com/books/rea...

    ChanceWong 評(píng)論0 收藏0
  • 十大經(jīng)典排序算法總結(jié)(Javascript描述)

    摘要:算法描述冒泡排序是一種簡(jiǎn)單的排序算法。算法描述和實(shí)現(xiàn)一般來(lái)說(shuō),插入排序都采用在數(shù)組上實(shí)現(xiàn)。平均情況希爾排序年發(fā)明第一個(gè)突破的排序算法是簡(jiǎn)單插入排序的改進(jìn)版它與插入排序的不同之處在于,它會(huì)優(yōu)先比較距離較遠(yuǎn)的元素。 前言 讀者自行嘗試可以想看源碼戳這,博主在github建了個(gè)庫(kù),讀者可以Clone下來(lái)本地嘗試。此博文配合源碼體驗(yàn)更棒哦~~~ 個(gè)人博客:Damonare的個(gè)人博客 原文地址:...

    Binguner 評(píng)論0 收藏0
  • JavaScript-面向?qū)ο蟆bject類型

    摘要:面向?qū)ο竺嫦驅(qū)ο缶幊痰娜Q為簡(jiǎn)稱。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象相互協(xié)作的軟件設(shè)計(jì)。面向?qū)ο缶幊痰娜齻€(gè)主要特征是封裝繼承多態(tài)。 面向?qū)ο?面向?qū)ο缶幊痰娜Q為Object Oriented Programming,簡(jiǎn)稱OOP。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象...

    amuqiao 評(píng)論0 收藏0
  • 講清楚之 javascript 對(duì)象屬性描述

    摘要:所以搞清楚是理解對(duì)象屬性描述符的唯一途徑。是一個(gè)對(duì)象,對(duì)象里的屬性描述符有兩種類型數(shù)據(jù)描述符和存取描述符。描述符必須是這兩種形式之一不能同時(shí)是兩者。描述符中未顯示設(shè)置的特性使用其默認(rèn)值。創(chuàng)建一個(gè)新屬性默認(rèn)描述符的鍵值都是或者。 對(duì)象屬性描述符 當(dāng)別人對(duì)你提及對(duì)象屬性描述符,可能會(huì)蒙逼。而如果提及對(duì)象屬性的 get/set 方法就秒懂了,標(biāo)準(zhǔn)描述和習(xí)慣表述在這里有些差別,但是指向的是同一...

    zhjx922 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<