成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript數(shù)據(jù)結(jié)構(gòu)--列表和棧的創(chuàng)建

Lycheeee / 665人閱讀

摘要:列表的抽象數(shù)據(jù)類(lèi)型定義后續(xù)列表上傳代碼二棧是一種特殊的列表,棧內(nèi)的元素只能通過(guò)列表的一端訪問(wèn),這一端稱為棧頂。棧被稱為一種后入先出,的數(shù)據(jù)結(jié)構(gòu)。另一個(gè)常用的操作是預(yù)覽棧頂?shù)脑?。方法清除棧?nèi)所有元素,屬性記錄棧內(nèi)元素的個(gè)數(shù)。

列表是一組有序的數(shù)據(jù)。每個(gè)列表中的數(shù)據(jù)項(xiàng)稱為元素。在 JavaScript 中,列表中的元素 可以是任意數(shù)據(jù)類(lèi)型。列表中可以保存多少元素并沒(méi)有事先限定,實(shí)際使用時(shí)元素的數(shù)量 受到程序內(nèi)存的限制。

不包含任何元素的列表稱為空列表。列表中包含元素的個(gè)數(shù)稱為列表的 length。在內(nèi)部實(shí) 現(xiàn)上,用一個(gè)變量 listSize 保存列表中元素的個(gè)數(shù)??梢栽诹斜砟┪?append 一個(gè)元素, 也可以在一個(gè)給定元素后或列表的起始位置 insert 一個(gè)元素。使用 remove 方法從列表中 刪除元素,使用 clear 方法清空列表中所有的元素。

列表的抽象數(shù)據(jù)類(lèi)型定義(后續(xù)列表上傳)

代碼:

function List() {
    this.listSize = 0;
    this.pos = 0;
    this.dataStore = [];                 
    this.clear = clear;
    this.find = find; 
    this.toString = toString; 
    this.insert = insert; 
    this.append = append; 
    this.remove = remove; 
    this.front = front;
    this.end = end;
    this.prev = prev;
    this.next = next;
    this.length = length;
    this.currPos = currPos;
    this.moveTo = moveTo;
    this.getElement = getElement;
    this.length = length;
    this.contains = contains;
}
function front() {
        this.pos = 0;
}
     function end() {
        this.pos = this.listSize-1;
}
     function prev() {
        if (this.pos > 0) {
           --this.pos;
        }
}
     function next() {
        if (this.pos < this.listSize-1) {
           ++this.pos;
        }
}
     function currPos() {
        return this.pos;
}
     function moveTo(position) {
        this.pos = position;
}
     function getElement() {
        return this.dataStore[this.pos];
}

棧是一種特殊的列表,棧內(nèi)的元素只能通過(guò)列表的一端訪問(wèn),這一端稱為棧頂。咖啡廳內(nèi) 的一摞盤(pán)子是現(xiàn)實(shí)世界中常見(jiàn)的棧的例子。只能從最上面取盤(pán)子,盤(pán)子洗凈后,也只能摞 在這一摞盤(pán)子的最上面。棧被稱為一種后入先出(LIFO,last-in-first-out)的數(shù)據(jù)結(jié)構(gòu)。

由于棧具有后入先出的特點(diǎn),所以任何不在棧頂?shù)脑囟紵o(wú)法訪問(wèn)。為了得到棧底的元 素,必須先拿掉上面的元素。

對(duì)棧的兩種主要操作是將一個(gè)元素壓入棧和將一個(gè)元素彈出棧。入棧使用 push() 方法,出 棧使用 pop() 方法。

另一個(gè)常用的操作是預(yù)覽棧頂?shù)脑?。pop() 方法雖然可以訪問(wèn)棧頂?shù)脑?,但是調(diào)用該方 法后,棧頂元素也從棧中被永久性地刪除了。peek() 方法則只返回棧頂元素,而不刪除它。

push()、pop() 和 peek() 是棧的 3 個(gè)主要方法,但是棧還有其他方法和屬性。clear() 方法 清除棧內(nèi)所有元素,length 屬性記錄棧內(nèi)元素的個(gè)數(shù)。我們還定義了一個(gè) empty 屬性,用 以表示棧內(nèi)是否含有元素,不過(guò)使用 length 屬性也可以達(dá)到同樣的目的。

代碼

function Stack() {
        this.dataStore = [];
        this.top = 0;
        this.push = push;
        this.pop = pop;
        this.peek = peek;
        this.clear = clear;
        this.length = length;
}
     function push(element) {
        this.dataStore[this.top++] = element;
}
     function peek() {
        return this.dataStore[this.top-1];
        }
     function pop() {
        return this.dataStore[--this.top];
}
     function clear() {
        this.top = 0;
}
     function length() {
        return this.top;
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84346.html

相關(guān)文章

  • 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列

    摘要:于是翻出了機(jī)房里的這本學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法開(kāi)始學(xué)習(xí)程序員的基礎(chǔ)知識(shí)。這本書(shū)用了我最熟悉的來(lái)實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法,而且書(shū)很薄,可以說(shuō)是一本不錯(cuò)的入門(mén)教程。隊(duì)列在頭部刪除元素,尾部添加元素。 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算...

    pingan8787 評(píng)論0 收藏0
  • 學(xué)習(xí)javascript數(shù)據(jù)結(jié)構(gòu)(一)——棧和隊(duì)列

    摘要:原文地址學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)一棧和隊(duì)列博主博客地址的個(gè)人博客幾乎所有的編程語(yǔ)言都原生支持?jǐn)?shù)組類(lèi)型,因?yàn)閿?shù)組是最簡(jiǎn)單的內(nèi)存數(shù)據(jù)結(jié)構(gòu)。他們就是棧和隊(duì)列。我們稱作棧頂,而另一端我們稱作棧底。移除棧頂?shù)脑兀瑫r(shí)返回被移除元素。 前言 只要你不計(jì)較得失,人生還有什么不能想法子克服的。 原文地址:學(xué)習(xí)javascript數(shù)據(jù)結(jié)構(gòu)(一)——棧和隊(duì)列 博主博客地址:Damonare的個(gè)人博客 幾乎所有的編程...

    doodlewind 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)《棧》

    摘要:我們都知道數(shù)組是里面比較常用的一種數(shù)據(jù)結(jié)構(gòu),棧和數(shù)組類(lèi)似,定義如下棧是一種遵從后進(jìn)先出原則的有序集合。新增加和待刪除的元素都保存在棧的尾部,也稱棧頂,相反的另一端就叫棧底,在棧的這種數(shù)據(jù)結(jié)構(gòu)里面,我們新增的元素都在棧頂,舊的元素都在棧底。 由于不是計(jì)算機(jī)專業(yè)出身,對(duì)數(shù)據(jù)結(jié)構(gòu)這些了解的比較少,最近看了一些相關(guān)的書(shū)籍,這里做一些總結(jié)。本篇要說(shuō)的是棧。我們都知道數(shù)組是JavaScript里面...

    nanchen2251 評(píng)論0 收藏0
  • PHP面試知識(shí)梳理

    摘要:三次握手所謂三次握手,是指簡(jiǎn)歷一個(gè)連接時(shí)需要客戶端和服務(wù)器總共發(fā)送三個(gè)包三次握手的目的是連接服務(wù)器指定端口,簡(jiǎn)歷連接,并同步連接雙方的序列號(hào)并交換窗口大小信息。 關(guān)于作者 昨天在思否上發(fā)了這篇整理,晚上10點(diǎn)多看到了很多贊收藏和關(guān)注,其實(shí)挺愧疚的,因?yàn)樽罱谡夜ぷ鬟@篇文章并沒(méi)有整理完??吹竭@個(gè)還挺受歡迎的,也因?yàn)樾鹿ぷ骰径ㄏ聛?lái)了,現(xiàn)在的公司正常交接中,打算下周末之前把這個(gè)知識(shí)梳理整理...

    archieyang 評(píng)論0 收藏0
  • JAVA中堆棧的區(qū)別

    摘要:堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建的對(duì)象。堆內(nèi)存用來(lái)存放由創(chuàng)建的對(duì)象和數(shù)組,在堆中分配的內(nèi)存,由虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。這也是比較占內(nèi)存的原因,實(shí)際上,棧中的變量指向堆內(nèi)存中的變量,這就是中的指針 堆:(對(duì)象) 引用類(lèi)型的變量,其內(nèi)存分配在堆上或者常量池(字符串常量、基本數(shù)據(jù)類(lèi)型常量),需要通過(guò)new等方式來(lái)創(chuàng)建。 堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建(new)的對(duì)象。(主要用于存放對(duì)象,...

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

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

0條評(píng)論

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