這篇文章主要講解了“javascript中有哪些?!?,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“javascript中有哪些?!卑桑?/p>
10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有彭州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
javascript中沒(méi)有棧,可以使用數(shù)組實(shí)現(xiàn)棧的所有功能;棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),似乎一種特殊的列表,任何不在棧頂?shù)脑囟紵o(wú)法訪問(wèn),需要先拿掉上面的元素,才能得到棧底的元素,例如可以利用push()將元素添加到棧頂。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript中沒(méi)有棧,但是可以用數(shù)組實(shí)現(xiàn)棧的所有功能。
棧是一種線性結(jié)構(gòu),最大的特點(diǎn)就是先進(jìn)后出,后進(jìn)先出。
入棧push():
出棧pop():
棧:
棧是一種和列表類(lèi)似的數(shù)據(jù)結(jié)構(gòu),可以用它來(lái)解決很多的編程問(wèn)題,棧是一種高效的數(shù)據(jù)結(jié)構(gòu),因?yàn)閿?shù)據(jù)只能在棧的頂端添加或者刪除,所以這樣的操作很快而且容易實(shí)現(xiàn)。
棧是一種特殊的列表,站內(nèi)的元素只能拖過(guò)列表的一端進(jìn)行訪問(wèn),這一端陳偉棧頂。一疊盤(pán)子是最常見(jiàn)的棧結(jié)構(gòu),只能從頂部取盤(pán)子,洗好的盤(pán)子也只能放在頂端。棧被稱(chēng)為后入先出的數(shù)據(jù)結(jié)構(gòu)。
由于棧具有后入先出的特點(diǎn),所以任何不在棧頂?shù)脑囟紵o(wú)法訪問(wèn)。為了得到棧底的元素,必須拿掉上面的元素。
對(duì)棧的操作有將一個(gè)元素壓入棧和將一個(gè)元素彈出棧。把元素壓入棧頂使用push()方法,從棧頂彈出元素使用pop()方法。還有一個(gè)方法是預(yù)覽棧頂元素,使用pop()方法雖然可以訪問(wèn)棧頂?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)是否還有元素,不過(guò)使用length屬性可以達(dá)到同樣的目的。
定義棧的操作
棧作為一種特殊的列表,只能從一端來(lái)進(jìn)行訪問(wèn),就像一摞盤(pán)子,放只能放在上面,拿也只能從上面拿,所以棧是一種先入后出的一種數(shù)據(jù)結(jié)構(gòu)。因?yàn)闂5倪@種特點(diǎn),棧中任意不在棧頂?shù)脑囟紵o(wú)法訪問(wèn),為了得到棧底的元素,必須把該元素之上的元素拿掉,把棧底的元素暴露在棧頂。棧還可以清空其內(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ù)開(kāi)始;
function Stack() { this.dataStore = []; //用來(lái)保存棧內(nèi)元素的數(shù)組 this.top = 0; //top用來(lái)記錄棧頂位置,初始化為0 this.push = push; this.pop = pop; this.peek = peek; this.clear = clear; this.length = length; }
接下來(lái)實(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)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)javascript中有哪些棧這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
標(biāo)題名稱(chēng):javascript中有哪些棧
標(biāo)題URL:http://aaarwkj.com/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)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)