使用Java怎么插入链表结点

  介绍

今天就跟大家聊聊有关使用Java怎么插入链表结点,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

为什么需要链表?

我们知道,数组也可以存储数据,那么为什么还需要链表呢?接下来,我们来看看数组和链表的区别:

1,数组就像身上编了号站成一排的人,要找第十个人很容易,根据人身上的编号很快就能找的到。但插入,删除慢,要往某个位置插入或删除一个人时,后面的人身上的编号都要变。当然,加入或删除的人始终末尾的也快。

2,链表就像手牵着手站成一圈的人,要找第十个人不容易,必须从第一个人一个个数过去。但插入,删除快。插入时只要解开两个人的手,并重新牵上新加进来的人的手就可以。删除一样的道理。

链表示意图

使用Java怎么插入链表结点

链表的建立

class  TestLink{//创建一个外部类   private  Entry 头;//指向头结点的引用   public  TestLink () {   时间=head  new 入口();//用结点类,new 一个头结点   }      class 入口{//Entry 创建一个结点内部类   int 数据;//定义数据块   Entry 未来;//定义地址块      public 入口(){//构造方法1   时间=data  1;//对结点数据块初始化   时间=next 零;//对地址初始化   }   public 条目(int  val){//构造方法2   data =, val;//对数据块赋值   时间=next 零;   }   }   }   public  class  TestDemo2  {   public  static  void  main (String [], args), {   TestLink  TestLink =, new  TestLink ();//创建一个,链表外部类,对象   ,,}   }

头插法:从头插入

public  void  insertHead (int  val) {//才能有这么一个结点,   Entry 才能;cur =, new 入口(val);   时间=cur.next 才能;head.next;   head.next 才能=,坏蛋;   以前,,}

头插法示意图:

使用Java怎么插入链表结点

尾插法:从尾插入

public  void  insertTail (int  val) {//找到尾巴   Entry  cur =,头;   而(cur.next  !=, null){//遍历结点   时间=cur  cur.next;   }   Entry  Entry =, new 入口(val);//得到的结点   时间=cur.next 入口;   }

尾插法示意图:

使用Java怎么插入链表结点

从任意结点插入

public  boolean  insertPos (int  val, int  pos) {//1,才能判断pos的合法性   如果才能(pos  & lt;, 0, | |, pos 祝辞=,getLength () + 1) {   ,,return 假;   ,,}   Entry 才能;cur =,头;   ,,(int 小姐:=,0;小姐:& lt;=, pos-1;我+ +){   ,,cur =, cur.next;   ,,}   ,,//cur  pos的前一个   Entry 才能;Entry =, new 入口(val);   时间=entry.next 才能;cur.next;   cur.next =,才能进入;   return 才能;真实;   以前,,}

示意图:

使用Java怎么插入链表结点

完整代码:

package  LianBiao;   class  TestLink1 {   private  Entry 头;//指向头结点的引用   public  TestLink1 () {   时间=head  new 入口();   }      {//Entry  Node  class 条目   int 数据;   Entry 下;   public 入口(){   时间=data  1;   时间=next 零;   }      public 条目(int  val) {   data =, val;   时间=next 零;   }   }      public  void  insertHead (int  val) {//有这么一个结点,   Entry  cur =, new 入口(val);   时间=cur.next  head.next;   head.next =,坏蛋;/* head.next =,坏蛋;   时间=cur.next  head.next; */}      public  void  insertTail (int  val) {//找到尾巴   Entry  cur =,头;   而(cur.next  !=, null) {   时间=cur  cur.next;   }   Entry  Entry =, new 入口(val);//得到的结点   时间=cur.next 入口;   }//得到单链表的长度:   public  int  getLength () {   int  len =, 0;   Entry  cur =, head.next;   而(cur  !=, null) {   len + +;   时间=cur  cur.next;   }   return 兰;   }//将数据插入到指定位置   public  boolean  insertPos (int  val, int  pos) {//1,判断pos的合法性   如果(pos  & lt;, 0, | |, pos 祝辞=,getLength () + 1) {   return 假;   }   Entry  cur =,头;   (int 小姐:=,0;小姐:& lt;=, pos-1;我+ +){   时间=cur  cur.next;   }//cur , pos的前一个   Entry  Entry =, new 入口(val);   时间=entry.next  cur.next;   时间=cur.next 入口;   return 真实;   }////显示()   public  void 显示(){/* Entry  cur =,头;   而(cur.next  !=, null) {   System.out.println(“数据:“+ cur.next.data);   时间=cur  cur.next;   } */Entry  cur =, head.next;   而(cur  !=, null) {   System.out.println(“数据:“+ cur.data);   时间=cur  cur.next;   }   }      }   public  class  LianBiao1  {   public  static  void  main (String [], args), {//,TODO  Auto-generated  method 存根   TestLink1  testlink =, new  TestLink1 ();      testlink.insertTail (1330);   testlink.insertTail (110);//1330,110,   testlink.insertPos (10 0);//10,1330,110      如果(testlink.insertPos (10000)) {   System.out.println(“插入成功“);   其他}{   System.out.println(“插入失败“);   }//10,32,1330,110      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Java怎么插入链表结点