2013-01-17 43 views
0

我知道數組的值可以通過它們的位置直接訪問,並且鏈表必須逐個通過它們,但不知道如何解釋搜索時發生的開銷和存儲方面的差異。當通過它們搜索鏈接列表和數組時,有什麼區別?

(我覺得更多關於前一個節點是否需要臨時存儲在某個地方,而嘗試訪問下一個節點時系統部分的任何額外存儲或開銷,當通過它們時是相同的?

任何人都可以給我一個細節,當在每個結構中搜索時會發生什麼?或者只是指向一個正確的方向

+0

要明確,通過「搜索」你的意思是按順序訪問每個元素? – Potatoswatter

+1

您的基本算法書或基本算法課程解釋了這一點。 –

+1

@LightnessRacesinOrbit網頁允許更快的隨機訪問;) – Potatoswatter

回答

2

數組是一個固定大小的矢量變量。

鏈接列表沒有指定的大小:列表中的每個元素都包含指向下一個元素的指針。這就是爲什麼你需要循序遍歷它。這裏的優點是結構不應該分配在連續的內存塊中,並且如果添加更多元素,則不需要調整其大小。

同樣在一個數組中,如果刪除一個元素,則需要移動所有以前的元素。如果在數組中間插入一個元素,則需要切換元素以爲新數組騰出空間。在列表中,您只需更新指針:

enter image description here

另一方面,陣列可以隨機訪問,並且不需要順序訪問:所以他們可以更快地搜索對象,排序等

+0

您快速製作圖表! –

+0

維基百科幫助:http://en.wikipedia.org/wiki/Linked_list –

+0

這是一個公共領域的圖像...好:) –

2

通過隨機訪問列表元素,可以實現搜索算法,如二分查找,這對於使用鏈表來說是不切實際的。

相關問題