讀到了這篇文章,寫的很清晰明了,摘抄下了一些自認(rèn)為比較清晰明了的部分,然后整理了一下
何為鏈表
鏈?zhǔn)浇Y(jié)構(gòu)是一種使用對(duì)象引用變量來(lái)創(chuàng)建對(duì)象間的鏈的數(shù)據(jù)結(jié)構(gòu)滔驶。
對(duì)象引用變量可用于創(chuàng)建鏈?zhǔn)浇Y(jié)構(gòu)
對(duì)象引用變量所存儲(chǔ)的特定地址一般無(wú)關(guān)緊要。換句話說(shuō),重要的是能夠使用引用變量來(lái)訪問對(duì)象没咙,而對(duì)象在內(nèi)存中的特定存儲(chǔ)位置并不重要立膛。因此赞草,我們一般將引用變量描述為一個(gè)“指向”對(duì)象的名稱,而不是顯示其地址吆鹤,按照這種理解厨疙,引用變量有時(shí)稱為“指針”,我個(gè)人理解為內(nèi)存的地址值
//這就是一個(gè)鏈?zhǔn)浇Y(jié)構(gòu)
public class Person {
private String name;
private String address;
private Person next; // Person對(duì)象的引用
}
這種類型的對(duì)象有時(shí)稱為自引用對(duì)象。
這種關(guān)系構(gòu)成了鏈表的基礎(chǔ)疑务。鏈表是一種鏈?zhǔn)浇Y(jié)構(gòu)沾凄,該結(jié)構(gòu)中的每個(gè)對(duì)象都指向下一個(gè)對(duì)象,從而構(gòu)成了鏈表中對(duì)象的線性次序知允。撒蟀。鏈表中存儲(chǔ)的對(duì)象一般稱為鏈表的節(jié)點(diǎn)。
注意温鸽,鏈表單獨(dú)需要一個(gè)引用變量保屯,用以表示其第一個(gè)結(jié)點(diǎn)。如果某個(gè)結(jié)點(diǎn)的next引用為null涤垫,則表示鏈表在該結(jié)點(diǎn)處終止
實(shí)現(xiàn)一個(gè)單向鏈表
插入結(jié)點(diǎn)
可能會(huì)在鏈表的任何位置插入一個(gè)結(jié)點(diǎn):在鏈表的首部姑尺,或在鏈表中任何內(nèi)部結(jié)點(diǎn)之間,或在鏈表的尾部蝠猬。
(1)在首部插入結(jié)點(diǎn)
第一步切蟋,設(shè)置所添加結(jié)點(diǎn)的next引用,使其指向鏈表中當(dāng)前的第一個(gè)結(jié)點(diǎn)榆芦。
第二步柄粹,重新設(shè)置指向鏈表首部的引用,使其指向這個(gè)新添加的結(jié)點(diǎn)匆绣。
在鏈表的首部插入一個(gè)結(jié)點(diǎn)
注意:如果上述這些步驟顛倒了驻右,則將會(huì)遇到困難。如果首先重置front引用犬绒,則將失去這個(gè)唯一指向現(xiàn)有鏈表的引用旺入,而且再也不能獲取它。
(2)在其他部分插入結(jié)點(diǎn)
首先凯力,設(shè)置新節(jié)點(diǎn)的next引用茵瘾,使其指向current鎖引用結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)。然后咐鹤,重新設(shè)置當(dāng)前結(jié)點(diǎn)的next引用拗秘,使其指向這個(gè)新的結(jié)點(diǎn)。
在鏈表的中部插入一個(gè)結(jié)點(diǎn)
刪除結(jié)點(diǎn)
對(duì)鏈表中的第一個(gè)結(jié)點(diǎn)的處理一般也比較特殊祈惶。
要?jiǎng)h除鏈表的第一個(gè)結(jié)點(diǎn)雕旨,則要重新設(shè)置指向鏈表首部的引用扮匠,使其指向鏈表中當(dāng)前的第二個(gè)結(jié)點(diǎn)。
刪除鏈表的第一個(gè)結(jié)點(diǎn)
一旦找到索要?jiǎng)h除的結(jié)點(diǎn)凡涩,則重新設(shè)置前一個(gè)結(jié)點(diǎn)的next引用棒搜,使其指向的結(jié)點(diǎn)與當(dāng)前結(jié)點(diǎn)的next引用所指向的結(jié)點(diǎn)相同。然后活箕,可以根據(jù)需要使用這個(gè)刪除的結(jié)點(diǎn)力麸。
刪除鏈表內(nèi)部結(jié)點(diǎn)
實(shí)現(xiàn)一個(gè)雙向鏈表
雙鏈表(雙向鏈表):雙鏈表和單鏈表相比贯要,多了一個(gè)指向尾指針(tail)兰怠,雙鏈表的每個(gè)結(jié)點(diǎn)都有一個(gè)頭指針head和尾指針tail,雙鏈表相比單鏈表更容易操作,雙鏈表結(jié)點(diǎn)的首結(jié)點(diǎn)的head指向?yàn)閚ull瞻赶,tail指向下一個(gè)節(jié)點(diǎn)的tail;尾結(jié)點(diǎn)的head指向前一個(gè)結(jié)點(diǎn)的head筋讨,tail 指向?yàn)閚ull埃叭,是雙向的關(guān)系;