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

資訊專欄INFORMATION COLUMN

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

Lycheeee / 702人閱讀

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

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

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

列表的抽象數(shù)據(jù)類型定義(后續(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)的元素只能通過列表的一端訪問,這一端稱為棧頂。咖啡廳內(nèi) 的一摞盤子是現(xiàn)實(shí)世界中常見的棧的例子。只能從最上面取盤子,盤子洗凈后,也只能摞 在這一摞盤子的最上面。棧被稱為一種后入先出(LIFO,last-in-first-out)的數(shù)據(jù)結(jié)構(gòu)。

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

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

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

push()、pop() 和 peek() 是棧的 3 個主要方法,但是棧還有其他方法和屬性。clear() 方法 清除棧內(nèi)所有元素,length 屬性記錄棧內(nèi)元素的個數(shù)。我們還定義了一個 empty 屬性,用 以表示棧內(nèi)是否含有元素,不過使用 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

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

    摘要:于是翻出了機(jī)房里的這本學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法開始學(xué)習(xí)程序員的基礎(chǔ)知識。這本書用了我最熟悉的來實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法,而且書很薄,可以說是一本不錯的入門教程。隊(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 評論0 收藏0
  • 學(xué)習(xí)javascript數(shù)據(jù)結(jié)構(gòu)(一)——棧和隊(duì)列

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

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

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

    nanchen2251 評論0 收藏0
  • PHP面試知識梳理

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

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

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

    RyanQ 評論0 收藏0

發(fā)表評論

0條評論

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