C/C++編程筆記:鏈接列表(鏈表)及其遍歷,今天就教你

像數(shù)組一樣,鏈表是線性數(shù)據(jù)結(jié)構(gòu)。與數(shù)組不同,鏈接列表元素不存儲在連續(xù)的位置;元素使用指針鏈接。

為什么要鏈接列表?
數(shù)組可用于存儲相似類型的線性數(shù)據(jù),但是數(shù)組具有以下限制。
1)數(shù)組的大小是固定的:因此,我們必須提前知道元素數(shù)量的上限。而且,通常,所分配的存儲器與用途無關(guān)而等于上限。
2)在元素數(shù)組中插入新元素非常昂貴,因為必須為新元素創(chuàng)建空間,并且為創(chuàng)建房間而必須移動現(xiàn)有元素。
例如,在系統(tǒng)中,如果我們在數(shù)組id []中維護ID的排序列表。
id [] = [1000,1010,1050,2000,2040]。
如果要插入新的ID 1005,則要保持排序順序,我們必須將所有元素都移到1000(不包括1000)之后。
除非使用某些特殊技術(shù),否則刪除數(shù)組也很昂貴。例如,要刪除id []中的1010,必須移動1010之后的所有內(nèi)容。
相對于陣列的優(yōu)勢
1)動態(tài)大小
2)易于插入/刪除
缺點:
1)不允許隨機訪問。我們必須從第一個節(jié)點開始順序訪問元素。因此,我們無法使用默認(rèn)實現(xiàn)對鏈接列表進行有效的二進制搜索。
2)列表的每個元素都需要用于指針的額外存儲空間。
3)不適合緩存。由于數(shù)組元素是連續(xù)的位置,因此存在引用位置,而在鏈接列表的情況下則不存在。
表示形式:
鏈表由指向鏈表第一個節(jié)點的指針表示。第一個節(jié)點稱為頭。如果鏈表為空,則head的值為NULL。
列表中的每個節(jié)點至少由兩部分組成:
1)數(shù)據(jù)
2)指向下一個節(jié)點的指針(或引用)
在C語言中,我們可以使用結(jié)構(gòu)表示一個節(jié)點。以下是帶有整數(shù)數(shù)據(jù)的鏈表節(jié)點的示例。
在Java或C#中,LinkedList可以表示為一個類,而Node可以表示為單獨的類。LinkedList類包含Node類類型的引用。
C

C++

C中的第一個簡單鏈接列表讓我們創(chuàng)建一個包含3個節(jié)點的簡單鏈接列表。
C ++(注釋為英文)



C



鏈表遍歷
在上一個程序中,我們創(chuàng)建了一個具有三個節(jié)點的簡單鏈表。讓我們遍歷創(chuàng)建的列表并打印每個節(jié)點的數(shù)據(jù)。為了進行遍歷,讓我們編寫一個通用函數(shù)printList()來打印任何給定的列表。
C ++

C

輸出:1? 2? 3
希望本篇文章對你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍分享:

編程學(xué)習(xí)視頻分享:
