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

資訊專欄INFORMATION COLUMN

數據結構JavaScript描述(一)

scq000 / 2996人閱讀

摘要:本文主要用實現一些常用的數據結構,并帶上相應的講解,本系列中的所有代碼并非所有都由本人編寫,但出于學習目的,在此分享出來并帶上一定的解釋,方便大家學習。相應的數據結構有隊列棧單鏈表雙向鏈表二叉樹相應代碼已上傳地址。

本文主要用JavaScript實現一些常用的數據結構,并帶上相應的講解,本系列中的所有代碼并非所有都由本人編寫,但出于學習目的,在此分享出來并帶上一定的解釋,方便大家學習。

相應的數據結構有:

隊列

單鏈表

雙向鏈表

二叉樹

相應代碼已上傳GitHub地址:https://github.com/HolyZheng/...   。

本文先給大家介紹隊列和棧,其他的在后續的文章中給大家帶來。

隊列

隊列 的概念應該不用多說了吧,一句話:先進先出(first in first out),就跟我們平時排隊一樣,先排隊的就先到。

代碼實現:

/**
 *       使用javascript實現一個隊列
 *       具有enqueue、dequeue、show三個方法
 */
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);
}

這個隊列主要有三個方法:enqueue、dequeue、show,分別為入隊,出隊,查看隊列。
enqueue跟show都很簡單,相信這里不用我來講,大家一看就能懂,所以就講一下dequeue函數:

enqueue 函數:

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;
}

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

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

代碼實現:

/**
 *       使用javascript實現一個棧
 *       具有push、pop、show三個方法
 */
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();

這個 棧 主要有三個方法:push、pop、show 三個方法,同樣我們挑一個相對較難的方法來講一下:

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 元素的時候,先判斷棧是否為空,如果不為空的話,就 delete 掉棧頭的元素,即最上方最先拿到的元素,然后this._size --指向下一個元素。

總結

隊列,先進先出,就像我們平時排隊

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

因為隊列和棧相對簡單,所以本文篇幅比較短,下一篇文章我會為大家帶來難度高一點的 單鏈表雙向鏈表 的代碼實現和講解,文章也會相對詳細,歡迎大家關注。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90339.html

相關文章

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

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

    ChanceWong 評論0 收藏0
  • 十大經典排序算法總結(Javascript描述)

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

    Binguner 評論0 收藏0
  • JavaScript-面向對象、Object類型

    摘要:面向對象面向對象編程的全稱為簡稱。面向對象編程是用抽象方式創建基于現實世界模型的一種編程方式。面向對象編程可以看做是使用一系列對象相互協作的軟件設計。面向對象編程的三個主要特征是封裝繼承多態。 面向對象 面向對象編程的全稱為Object Oriented Programming,簡稱OOP。面向對象編程是用抽象方式創建基于現實世界模型的一種編程方式。面向對象編程可以看做是使用一系列對象...

    amuqiao 評論0 收藏0
  • 講清楚之 javascript 對象屬性描述

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

    zhjx922 評論0 收藏0

發表評論

0條評論

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