堆(heap),棧(stack)與隊(duì)列(queue)

棧(stack)的三種含義 ?

含義一:數(shù)據(jù)結(jié)構(gòu)?stack的第一種含義是一組數(shù)據(jù)的存放方式,特點(diǎn)為L(zhǎng)IFO,即后進(jìn)先出(Last in, first out)。

含義二:代碼運(yùn)行方式 ?stack的第二種含義是"調(diào)用棧"(call stack),表示函數(shù)或子例程像堆積木一樣存放,以實(shí)現(xiàn)層層調(diào)用。

含義三:內(nèi)存區(qū)域 ?stack的第三種含義是存放數(shù)據(jù)的一種內(nèi)存區(qū)域。程序運(yùn)行的時(shí)候,需要內(nèi)存空間存放數(shù)據(jù)。一般來(lái)說(shuō),系統(tǒng)會(huì)劃分出兩種不同的內(nèi)存空間:一種叫做stack(棧),另一種叫做heap(堆)。


數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式 ,

棧和隊(duì)列的實(shí)現(xiàn)可以用順序存儲(chǔ)結(jié)構(gòu)或鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu).

順序存儲(chǔ)結(jié)構(gòu):順序支持隨機(jī)存取,方便操作

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):本質(zhì)上就是一個(gè)鏈表,插入和刪除上,鏈?zhǔn)降囊软樞虻姆奖?br>


堆(heap),棧(stack)與隊(duì)列(queue)

堆(heap) 堆數(shù)據(jù)結(jié)構(gòu)

堆數(shù)據(jù)結(jié)構(gòu)是一種樹(shù)狀結(jié)構(gòu)。它的存取數(shù)據(jù)的方式,則與書(shū)架與書(shū)非常相似,將根節(jié)點(diǎn)最大的堆叫做最大堆或大根堆,根節(jié)點(diǎn)最小的堆叫做最小堆或小根堆。一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能被回收,分配方式倒是類似于鏈表。堆則是存放在二級(jí)緩存中,生命周期由虛擬機(jī)的垃圾回收算法來(lái)決定(并不是一旦成為孤兒對(duì)象就能被回收)。所以調(diào)用這些對(duì)象的速度要相對(duì)來(lái)得低一些。

引用類型是保存在堆內(nèi)存中的對(duì)象

棧(stack) 又名堆棧

類似乒乓球桶,先進(jìn)后出,后進(jìn)先出,由操作系統(tǒng)自動(dòng)分配釋放 ,一級(jí)緩存, 他們通常都是被調(diào)用時(shí)處于存儲(chǔ)空間中,調(diào)用完畢立即釋放。

基本類型是保存在棧內(nèi)存中的簡(jiǎn)單數(shù)據(jù)段,它們的值都有固定的大小,保存在??臻g,通過(guò)按值訪問(wèn),JavaScript中有6種基礎(chǔ)數(shù)據(jù)類型,分別是Undefined、Null、Boolean、Number、String,Symbol


隊(duì)列

隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。正如排隊(duì)過(guò)安檢一樣,排在隊(duì)伍前面的人一定是最先過(guò)檢的人。用以下的圖示可以清楚的理解隊(duì)列的原理。




在變量對(duì)象中的數(shù)據(jù)發(fā)生復(fù)制行為時(shí),系統(tǒng)會(huì)自動(dòng)為新的變量分配一個(gè)新值。var b = a執(zhí)行之后,a與b雖然值都等于20,但是他們其實(shí)已經(jīng)是相互獨(dú)立互不影響的值了。我們通過(guò)var n = m執(zhí)行一次復(fù)制引用類型的操作。引用類型的復(fù)制同樣也會(huì)為新的變量自動(dòng)分配一個(gè)新的值保存在變量對(duì)象中,但不同的是,這個(gè)新的值,僅僅只是引用類型的一個(gè)地址指針。當(dāng)?shù)刂分羔樝嗤瑫r(shí),盡管他們相互獨(dú)立,但是在變量對(duì)象中訪問(wèn)到的具體對(duì)象實(shí)際上是同一個(gè)。如圖所示。因此當(dāng)我改變n時(shí),m也發(fā)生了變化。這就是引用類型的特性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容