標籤:java 資料結構 單鏈表
鏈表的組成:鏈表頭+結點
? ?鏈表頭一般只儲存下一個節點的引用
? ?節點:存資料+下一個節點的引用
鏈表頭代碼:
package?com.xingej.algorithm.datastructure.linkedList.singleLinkedList;/**?*?聲明一個鏈表的頭部?*??*?從鏈表頭的使用,聯想到hadoop,spark,netty中都有上下文context?*??*[email protected]?erjun?2017年12月8日?上午8:45:08?*/public?class?LinkList?{????private?Node?first;????public?LinkList()?{????????//?初始鏈表時,指標引用為空白????????first?=?null;????}????public?void?insertFirst(int?iData,?double?dData)?{????????//?建立一個新的鏈節點????????Node?newLink?=?new?Node(iData,?dData);????????//?更新新建立的鏈節點next引用,也就是將頭部引用,賦值給它????????newLink.next?=?first;????????//?更新鏈表頭部的引用,?也就是將新建立的鏈節點的引用,賦值給頭部引用????????first?=?newLink;????}????public?boolean?isEmpty()?{????????return?null?==?first;????}????public?Node?deleteFirst()?{????????//?先緩衝?被刪除的第一個元素????????Node?temp?=?first;????????//?鏈表,這種資料結構裡,刪除元素,只需要更新指標引用就可以了????????//?更新頭部元素的引用????????first?=?first.next;????????return?temp;????}????public?void?displayList()?{????????System.out.println("List?(first--->last):");????????Node?current?=?first;????????while?(null?!=?current)?{????????????current.displayLink();????????????//?擷取下一個元素的引用,?在C語言裡,稱為指標????????????current?=?current.next;????????}????????System.out.println();????}}
節點代碼:
package?com.xingej.algorithm.datastructure.linkedList.singleLinkedList;/**?*?聲明一個節點?*??*[email protected]?erjun?2017年12月8日?上午8:41:50?*/public?class?Node?{????private?int?iData;????private?double?dData;????//?不是private?哦,不然對象訪問不了????public?Node?next;????public?Node(int?iData,?double?dData)?{????????this.dData?=?dData;????????this.iData?=?iData;????}????public?void?displayLink()?{????????System.out.println("{"?+?iData?+?",?"?+?dData?+?"}");????}}
簡單測試案例:
package?com.xingej.algorithm.datastructure.linkedList.singleLinkedList;import?org.junit.Test;/**?*?單鏈表測試?*??*[email protected]?erjun?2017年12月8日?上午9:00:54?*/public?class?LinkListTest?{[email protected]????public?void?test()?{????????LinkList?list?=?new?LinkList();????????//?很明顯,每次都是插入鏈表的第一個元素????????list.insertFirst(32,?8);????????list.insertFirst(3,?3);????????list.insertFirst(2,?6);????????list.insertFirst(42,?8);????????list.insertFirst(26,?9);????????list.displayList();????}}
Java資料結構之單鏈表