線性鏈表
特點(diǎn):用一組任意的存儲(chǔ)單元儲(chǔ)蓄線性表的元素(不一定連續(xù))。
節(jié)點(diǎn):線性鏈表由除了存儲(chǔ)本身的信息,還需要存儲(chǔ)一個(gè)指示后繼的信息,這兩部分組成數(shù)據(jù)元素的存儲(chǔ)映像,稱為節(jié)點(diǎn)。
節(jié)點(diǎn)包括兩個(gè)域:存儲(chǔ)數(shù)據(jù)元素信息的域?yàn)?strong>數(shù)據(jù)域;存儲(chǔ)直接后繼的存儲(chǔ)位置的域叫做指針域。指針域中存儲(chǔ)的信息稱作指針或鏈,多個(gè)節(jié)點(diǎn)鏈成為一個(gè)鏈表。
由于此鏈表的每個(gè)節(jié)點(diǎn)中只包含一個(gè)指針域,故又稱為線性鏈表或單鏈表。
- 鏈表的存取必須從頭指針開始,頭指針指示鏈表中第一個(gè)節(jié)點(diǎn)存儲(chǔ)的位置。同時(shí),由于最后一個(gè)數(shù)據(jù)元素沒有直接的后繼,則線性鏈表最后一個(gè)幾點(diǎn)指針為“空”(NULL)。
- 有時(shí),我們?cè)趩捂湵淼牡谝粋€(gè)節(jié)點(diǎn)之前附設(shè)一個(gè)節(jié)點(diǎn),稱為頭結(jié)點(diǎn)。
頭結(jié)點(diǎn)的數(shù)據(jù)域可以不存儲(chǔ)任何信息,也可以存儲(chǔ)線性表的長度等類的附加信息,頭結(jié)點(diǎn)指針域存儲(chǔ)指向第一個(gè)節(jié)點(diǎn)的指針,若線性表為空表,則頭結(jié)點(diǎn)的指針域?yàn)椤翱铡薄?/p>
- 單鏈表是一種動(dòng)態(tài)結(jié)構(gòu),整個(gè)可用存儲(chǔ)空間可為多個(gè)鏈表共同享用,每個(gè)鏈表占用的空間不需要預(yù)先分配,而是可以由系統(tǒng)應(yīng)需求即使生成。因此,簡歷線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的過程就是一個(gè)動(dòng)態(tài)生成鏈表的過程。
循環(huán)鏈表
特點(diǎn):表中最后一個(gè)節(jié)點(diǎn)的指針域指向頭結(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán)。
循環(huán)鏈表操作和線性鏈表基本一致,差別僅在于算法中判斷最后一個(gè)節(jié)點(diǎn)指針域指向不是空,而是指向頭指針。
雙向鏈表
特點(diǎn):雙向鏈表的節(jié)點(diǎn)中有兩個(gè)指針域,其一指向直接的后繼,另一指向直接的前驅(qū)。
背景:單鏈表結(jié)果中節(jié)點(diǎn)只有一個(gè)指針指向后繼,查找節(jié)點(diǎn)每次只能順指針往后尋找,若要尋查節(jié)點(diǎn)的直接前驅(qū),需要從表頭指針出發(fā),為了克服單鏈表的缺點(diǎn),衍生雙向鏈表。