Java數據結構之單鏈表
阿新 • • 發佈:2017-12-08
java 數據結構 單鏈表 鏈表的組成:鏈表頭+結點
? ?鏈表頭一般只存儲下一個節點的引用
? ?節點:存數據+下一個節點的引用
鏈表頭代碼:
package?com.xingej.algorithm.datastructure.linkedList.singleLinkedList; /** ?*?聲明一個鏈表的頭部 ?*? ?*?從鏈表頭的使用,聯想到hadoop,spark,netty中都有上下文context ?*? ?*?@author?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; /** ?*?聲明一個節點 ?*? ?*?@author?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; /** ?*?單鏈表測試 ?*? ?*?@author?erjun?2017年12月8日?上午9:00:54 ?*/ public?class?LinkListTest?{ ????@Test ????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數據結構之單鏈表