溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JS的算法與數(shù)據(jù)結(jié)構(gòu)的介紹

發(fā)布時(shí)間:2021-08-31 02:44:08 來源:億速云 閱讀:98 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“JS的算法與數(shù)據(jù)結(jié)構(gòu)的介紹”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

JS的算法與數(shù)據(jù)結(jié)構(gòu)

  棧,又叫堆棧,是和列表類似的一種數(shù)據(jù)結(jié)構(gòu),但是卻更高效,因?yàn)闂?nèi)的元素只能通過列表的一端訪問,稱為棧頂,數(shù)據(jù)只能在棧頂添加或刪除,遵循先入后出(LIFO,last-in-first-out)的原則,普遍運(yùn)用于計(jì)算機(jī)的方方面面。

  對(duì)棧的操作主要有兩種,一是將一個(gè)元素壓入棧,push方法,另一個(gè)就是將棧頂元素出棧,pop方法。

  除此之外,棧還有其他的一些屬性和方法:查看當(dāng)前棧頂?shù)脑刂?,我們使用peek方法,它僅僅返回棧頂元素值,并不刪除它;clear方法用于清空當(dāng)前棧內(nèi)的所有元素;top屬性記錄當(dāng)前棧頂位置;length方法返回當(dāng)前棧內(nèi)元素總數(shù)等;接著我們定義棧的數(shù)據(jù)類型,并利用JS中的數(shù)組去實(shí)現(xiàn)它。

  棧數(shù)據(jù)類型定義棧的實(shí)現(xiàn)//定義棧functionStack(){this.dataStore=[];//初始化為空this.top=0;//記錄棧頂位置this.pop=pop;//出棧this.push=push;//入棧this.peek=peek;//查看棧頂元素this.length=length;//查看棧內(nèi)元素總數(shù)this.clear=clear;//清空棧}

  我們利用dataStore來保存棧內(nèi)元素,初始化為空數(shù)組,top屬性用于記錄當(dāng)前棧頂位置,初始化的時(shí)候?yàn)?,表示棧頂對(duì)應(yīng)數(shù)組的起始位置是0,如果有元素入棧,則該屬性會(huì)隨之反生變化。

  首先我們來實(shí)現(xiàn)一個(gè)入棧方法。

  push:向棧內(nèi)壓入一個(gè)新的元素

  該方法將一個(gè)新元素入棧,放到數(shù)組中top所對(duì)應(yīng)的位置上,并將top的值加1,讓其指向數(shù)組的下一個(gè)空位置functionpush(element){this.dataStore[this.top]=element;}

  能入棧,就得可以出棧,接著我們來看出棧方法:

  pop:取出棧頂元素

  該方法與入棧相反,返回棧頂元素,并將top的值減1functionpop(){returnthis.dataStore[--this.top];}

  如何查看棧頂元素呢,peek方法!

  peek:查看棧頂元素

  該方法返回的是棧頂元素,即top-1個(gè)位置元素functionpeek(){if(this.top>0)returnthis.dataStore[this.top-1];elsereturn'Empty';}

  這里我做了個(gè)判斷,如果一個(gè)空棧調(diào)用了peek方法,因?yàn)闂?nèi)沒有任何元素,所以我這里返回了一個(gè)'Empty';

  現(xiàn)在,我們已經(jīng)有了基本的入棧、出棧、查看棧頂元素的方法。

“JS的算法與數(shù)據(jù)結(jié)構(gòu)的介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI