javascript中有哪些棧

這篇文章主要講解了“javascript中有哪些?!?,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“javascript中有哪些?!卑?!

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有彭州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

javascript中沒有棧,可以使用數(shù)組實(shí)現(xiàn)棧的所有功能;棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),似乎一種特殊的列表,任何不在棧頂?shù)脑囟紵o法訪問,需要先拿掉上面的元素,才能得到棧底的元素,例如可以利用push()將元素添加到棧頂。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript中有幾個(gè)棧

JavaScript中沒有棧,但是可以用數(shù)組實(shí)現(xiàn)棧的所有功能。

棧是一種線性結(jié)構(gòu),最大的特點(diǎn)就是先進(jìn)后出,后進(jìn)先出。

javascript中有哪些棧

入棧push():

javascript中有哪些棧

出棧pop():

javascript中有哪些棧

棧:

棧是一種和列表類似的數(shù)據(jù)結(jié)構(gòu),可以用它來解決很多的編程問題,棧是一種高效的數(shù)據(jù)結(jié)構(gòu),因?yàn)閿?shù)據(jù)只能在棧的頂端添加或者刪除,所以這樣的操作很快而且容易實(shí)現(xiàn)。

棧是一種特殊的列表,站內(nèi)的元素只能拖過列表的一端進(jìn)行訪問,這一端陳偉棧頂。一疊盤子是最常見的棧結(jié)構(gòu),只能從頂部取盤子,洗好的盤子也只能放在頂端。棧被稱為后入先出的數(shù)據(jù)結(jié)構(gòu)。

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

對(duì)棧的操作有將一個(gè)元素壓入棧和將一個(gè)元素彈出棧。把元素壓入棧頂使用push()方法,從棧頂彈出元素使用pop()方法。還有一個(gè)方法是預(yù)覽棧頂元素,使用pop()方法雖然可以訪問棧頂?shù)脑?,但是調(diào)用該方法后棧頂?shù)脑貙⒈挥谰玫膭h除。peek()方法只返回棧頂?shù)脑?,而不刪除它。

為了記錄棧頂元素的位置,同時(shí)也為了標(biāo)記從哪里可以加入新元素,我們使用變量top,當(dāng)向棧內(nèi)壓入元素是該變量增大,從站內(nèi)彈出元素時(shí),該變量減小。

pop(),push(),peek()方法是最主要的三個(gè)方法,同時(shí)定義clear()方法可以清楚棧內(nèi)所有的元素,length屬性定義棧內(nèi)元素的個(gè)數(shù),同時(shí)定義一個(gè)empty屬性標(biāo)識(shí)棧內(nèi)是否還有元素,不過使用length屬性可以達(dá)到同樣的目的。

定義棧的操作

棧作為一種特殊的列表,只能從一端來進(jìn)行訪問,就像一摞盤子,放只能放在上面,拿也只能從上面拿,所以棧是一種先入后出的一種數(shù)據(jù)結(jié)構(gòu)。因?yàn)闂5倪@種特點(diǎn),棧中任意不在棧頂?shù)脑囟紵o法訪問,為了得到棧底的元素,必須把該元素之上的元素拿掉,把棧底的元素暴露在棧頂。棧還可以清空其內(nèi)所有元素,也可以記錄棧內(nèi)元素的個(gè)數(shù)。

綜上,我們定義幾個(gè)操作棧的方法。

  • push()    把元素添加到棧頂

  • pop()     把元素從棧頂刪除

  • peek()    返回棧頂?shù)脑?/p>

  • clear()    清空棧內(nèi)元素

  • length()    棧內(nèi)元素的個(gè)數(shù)

棧的實(shí)現(xiàn)

實(shí)現(xiàn)棧,底層的數(shù)據(jù)結(jié)構(gòu)采用數(shù)組,以定義棧的構(gòu)造函數(shù)開始;

function Stack() {
    this.dataStore = [];         //用來保存棧內(nèi)元素的數(shù)組
    this.top = 0;                   //top用來記錄棧頂位置,初始化為0
    this.push = push;
    this.pop = pop;
    this.peek = peek;
    this.clear = clear;
    this.length = length;
}

接下來實(shí)現(xiàn)push(),pop(),peek(),clear()和length()。

push()方法是,當(dāng)向棧頂添加一個(gè)新元素時(shí),在數(shù)組的記錄棧頂?shù)奈恢玫膖op的位置添加這個(gè)值,添加完成top需要加1;

pop()正好與push()相反,需要top減1,但同時(shí)減1之后返回top位置的值,即已刪除元素;

peek()直接返回?cái)?shù)組top-1位置的元素,即棧頂元素就可以了;

clear() 直接把top值賦為0,直接清空棧;

length()直接返回top的值,棧頂位置即棧內(nèi)元素個(gè)數(shù)

function push(element) {
    this.dataStore[this.top++] = element;   // 先在top位置加入元素,之后top加1
}
function pop() {
    return this.dataStore[--this.top];   // top先減1,然后返回top位置的元素
}
function peek() {
    return this.dataStore[this.top - 1];
}
function clear() {
    this.top = 0;
}
function length() {
    return this.top;
}

感謝各位的閱讀,以上就是“javascript中有哪些?!钡膬?nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)javascript中有哪些棧這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

標(biāo)題名稱:javascript中有哪些棧
標(biāo)題URL:http://muchs.cn/article40/isjceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、云服務(wù)器網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站網(wǎng)站策劃、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)