第五章 鏈表
ps:整個(gè)文章所涉及的源代碼我都發(fā)布在我的Github主頁上,大家可以自行下載,如果對(duì)您有一丟丟的幫助的話,記得在我的github項(xiàng)目上點(diǎn)上【star】喲,當(dāng)然不要忘了在本篇文章下方【點(diǎn)贊】哦~,你們的支持將是我最大的動(dòng)力!
(利他之心是每個(gè)優(yōu)秀開發(fā)者的傳統(tǒng)美德!——@惜墨的少年)
定義鏈表
鏈表是由一組節(jié)點(diǎn)組成的集合。每個(gè)節(jié)點(diǎn)都使用一個(gè)對(duì)象的引用指向它的后繼。指向另一個(gè)節(jié)點(diǎn)的引用叫做鏈。數(shù)組元素靠它們的位置進(jìn)行引用,鏈表元素則是靠相互之間的關(guān)系進(jìn)行引用。
上圖中,我們說chaoge跟在draven后面,而不說chaoge是鏈表中的第二個(gè)元素。遍歷鏈表 ,就是跟著鏈表,從鏈表的首元素一直走到尾元素(但這不包含鏈表的頭節(jié)點(diǎn),頭節(jié)點(diǎn)常常用來作為鏈表的接入點(diǎn)),鏈表的尾元素指向一個(gè)null節(jié)點(diǎn)。許多鏈表的實(shí)現(xiàn)都在鏈表最前面有一個(gè)特殊節(jié)點(diǎn),叫做頭節(jié)點(diǎn)。
鏈表中插入節(jié)點(diǎn)效率很高。向鏈表中插入節(jié)點(diǎn),需要修改前面的節(jié)點(diǎn)(前驅(qū)),使其指向新加入的節(jié)點(diǎn),而新加入的節(jié)點(diǎn)則指向原來前驅(qū)指向的節(jié)點(diǎn)。
從鏈表中刪除一個(gè)元素也很容易。將待刪除元素的前驅(qū)節(jié)點(diǎn)指向待刪除元素的后繼節(jié)點(diǎn),同時(shí)將待刪除元素指向null。
設(shè)計(jì)一個(gè)基于對(duì)象的鏈表
Node類用來表示節(jié)點(diǎn),LinkedList類提供插入節(jié)點(diǎn)、刪除節(jié)點(diǎn)、顯示列表元素的方法。
Node類
LinkedList類
遍歷鏈表,查找給定數(shù)據(jù)
從鏈表中刪除一個(gè)節(jié)點(diǎn)
從鏈表中刪除節(jié)點(diǎn)時(shí),需要先找到待刪除節(jié)點(diǎn)前面的節(jié)點(diǎn),修改它的next屬性,使其不再指向待刪除節(jié)點(diǎn),而是指向待刪除節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。