? ?链表头一般只存储下一个节点的引用
? ?节点:存数据+下一个节点的引用
链表头代码:
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(); ????} }
原文地址:http://blog.51cto.com/xingej/2048729