Java数据结构之单链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据结构之单链表相关的知识,希望对你有一定的参考价值。

链表的组成:链表头+结点

? ?链表头一般只存储下一个节点的引用

? ?节点:存数据+下一个节点的引用

  1. 链表头代码:

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();
????}

}
  1. 节点代码:

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数据结构之单链表的主要内容,如果未能解决你的问题,请参考以下文章

Java——数据结构之单链表

Java 大话数据结构 线性表之单链表

Java 大话数据结构 线性表之单链表

java数据结构与算法之反转单链表

Java 数据结构——单链表面试题

数据结构之单链表