美文网首页
java数据结构之单向链表

java数据结构之单向链表

作者: Cholechow | 来源:发表于2018-12-14 21:16 被阅读0次

  单链表是链表中结构最简单的。一个单链表的节点 (Node) 分为两个部分,第一个部分 (data) 保存或者显示关于节点的信息,另一个部分存储下一个节点的地址。最后一个节点存储地址的部分指向空值。

  单向链表只可向一个方向遍历,一般查找一个节点的时候需要从第一个节点开始每次访问下一个节点,一直访问到需要的位置。而插入一个节点,对于单向链表,我们只提供在链表头插入,只需要将当前插入的节点设置为头节点,next 指向原头节点即可。删除一个节点,我们将该节点的上一个节点的 next 指向该节点的下一个节点。

首先建立一个链表结点的类,如下所示

package 数据结构;

public class Node {

          int data;//数据

          public Node next;//下一个结点

          public Node previous;//上一个结点

          public Node(int value){

          this.data=value;

          }

          public void display(){

          System.out.println(data+"");

          }

}

初始化链表:

package 数据结构;

public class LinkList {

Node first;//头结点

            public LinkList(){

            first=null;//初始化头结点为null

            }

            public void insertFirst(int value){//插入元素,在头结点前面插入

            Node node=new Node(value);

            node.next=first;

            first=node;

            }

            public int deletFirst(){//删除元素,从头结点开始

            Node temp=first;

            first=first.next;//把头结点的下一个结点赋给它,即删除了头结点

            return temp.data;//返回删除的结点的数据

            }

            public void display(){//将链表的数据打印出来

            Node t=first;

            while(t.next!=null){//打印出除尾结点以外的数据

            t.display();

            t=t.next;

            }

            t.display();//打印尾结点的数据

            }

            public Node chazhao(int value){//按值查找

            Node tt=first;

            while(tt.data!=value){

            if(tt.next==null){

            return null;

            }

            tt=tt.next;

            }

            return tt;//返回查找的结点

            }

            public Node shangchu(int value){//按值删除并输出值

            Node tt=first;

            Node ty=first;

            while(tt.data!=value){

            if(tt.next==null){

            return null;

            }

            ty=tt;//ty是要删除的结点的前一个结点,因为后面一句代码将tt的值变成了tt的下一个结点

              tt=tt.next;

            }

            if(tt==first){

            first=first.next;

            }

            else{

            ty.next=tt.next;//将tt的前面的结点的下一个结点变成tt的下一结点,即删除了tt结点

            }

            return tt;//返回删除的结点

            }

}

测试:

package 数据结构;

public class TextLinkList {

public static void main(String args[]){

      LinkList a=new LinkList();

      a.insertFirst(1);//插入数据

      a.insertFirst(2);

      a.insertFirst(3);

      a.display();//打印数据

      System.out.println("************");

      a.deletFirst();//删除头结点

      a.display();//打印数据

      System.out.println("************");

      Node node=a.chazhao(1);//查找data值为1的结点

    System.out.println(node.data);//输出数据

    System.out.println("************");

    Node node1=a.shangchu(1);//删除结点data值为1的数据

    System.out.println(node1.data);//打印数据

    System.out.println("************");

    a.display();

}}

输出结果如下:

好啦,这次就到这里啦,有问题可以和我留言哦!

邮箱:2321591758@qq.com

其他博客的链接:

Github个人网站知乎简书

欢迎各位访问哦,这次就到这里啦!

相关文章

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 用Java写单向链表

    数据结构—单向链表 为了巩固自己的基础知识,这次就用 Java 来写一个单向链表。问:什么是单向链表?首先链表是数...

  • 算法与数据结构-链表((linked-list)-Java实现单

    title: 算法与数据结构-链表((linked-list)-Java实现单向链表 date: 2019-02-...

  • 算法与数据结构知识汇总(二、链表)

    1、概念 2、链表的数据结构 单向链表的数据结构如下图: 上图数据结构为单向链表,简称单链表,该数据结构由若干个节...

  • 链表

    一、单向链表 单向链表的普通实现 Java实现: Kotlin实现: 单向链表的递归实现 Java实现: 二、双向...

  • 2019-12-04 Java-LinkedList源码解读

    @TOC 1、链表数据结构 链表分为单向链表和双向链表,他们的区别在于,单向链表只能单向寻址,而双向链表可以双向寻...

  • 单向链表的基本操作

    参考 一步一步写算法(之单向链表) 1. 单向链表的数据结构 2. 创建链表 3. 增加节点 4. 删除节点

  • java数据结构之单向链表

    单链表是链表中结构最简单的。一个单链表的节点 (Node) 分为两个部分,第一个部分 (data) 保存或者显示...

  • Java 数据结构 单向链表

    Java 数据结构 单向链表 基础介绍 链表与循序表都是同属于数据结构中顺序表中的一种,而它与循序表的不同就在于 ...

  • 线性表-单向循环链表

    单向循环链表 单向循环链表示意图如下: 数据结构定义(同普通链表) 单向循环链表初始化与赋值 在上面循环遍历查找尾...

网友评论

      本文标题:java数据结构之单向链表

      本文链接:https://www.haomeiwen.com/subject/gqenhqtx.html