Basic链表与队列的区别
區(qū)別?
鏈表是一種數(shù)據(jù)的存儲(chǔ)方式(相對(duì)應(yīng)的是順序存儲(chǔ)結(jié)構(gòu)),保存的數(shù)據(jù)在內(nèi)存中不連續(xù)的,用指針對(duì)數(shù)據(jù)進(jìn)行訪問(wèn); 隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),其特點(diǎn)是先進(jìn)先出,后進(jìn)后出; 隊(duì)列的存儲(chǔ)方式可以使用線性表進(jìn)行存儲(chǔ),也可以使用鏈表進(jìn)行存儲(chǔ)定義
一、隊(duì)列
????隊(duì)列,顧名思義,就像排隊(duì)一樣,我們只能在隊(duì)首刪除,在隊(duì)尾增加。隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。
????參考:隊(duì)列的解析與C語(yǔ)言實(shí)現(xiàn)
二、棧
??????棧,可以理解為一個(gè)儲(chǔ)物的地方,且只有一個(gè)出口,先放進(jìn)去的東西最后才能拿出來(lái)(因?yàn)楸缓竺娣胚M(jìn)去的東西擋住了)。棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表。它按照先進(jìn)后出(FILO)的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開(kāi)始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來(lái))。參考:百度百科:棧和啊哈算法之棧
三、鏈表
????????鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。 相比于線性表順序結(jié)構(gòu),操作復(fù)雜。由于不必須按順序存儲(chǔ),鏈表在插入的時(shí)候可以達(dá)到O(1)的復(fù)雜度,比另一種線性表順序表快得多,但是查找一個(gè)節(jié)點(diǎn)或者訪問(wèn)特定編號(hào)的節(jié)點(diǎn)則需要O(n)的時(shí)間,而線性表和順序表相應(yīng)的時(shí)間復(fù)雜度分別是O(logn)和O(1)。
???????除了使用指針來(lái)實(shí)現(xiàn)鏈表(正統(tǒng)的方式),還可以使用數(shù)組來(lái)模擬鏈表。如截圖二所示。
?
總結(jié)
以上是生活随笔為你收集整理的Basic链表与队列的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支付宝转账最多能转多少
- 下一篇: Yii的控制器等名称获取