Java数据结构之单链表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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数据结构之单链表的主要内容,如果未能解决你的问题,请参考以下文章