介绍
今天就跟大家聊聊有关使用Java怎么插入链表结点,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
为什么需要链表?
我们知道,数组也可以存储数据,那么为什么还需要链表呢?接下来,我们来看看数组和链表的区别:
1,数组就像身上编了号站成一排的人,要找第十个人很容易,根据人身上的编号很快就能找的到。但插入,删除慢,要往某个位置插入或删除一个人时,后面的人身上的编号都要变。当然,加入或删除的人始终末尾的也快。
2,链表就像手牵着手站成一圈的人,要找第十个人不容易,必须从第一个人一个个数过去。但插入,删除快。插入时只要解开两个人的手,并重新牵上新加进来的人的手就可以。删除一样的道理。
链表示意图
链表的建立
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 才能=,坏蛋; 以前,,}>头插法示意图:
尾插法:从尾插入
public void insertTail (int val) {//找到尾巴 Entry cur =,头; 而(cur.next !=, null){//遍历结点 时间=cur cur.next; } Entry Entry =, new 入口(val);//得到的结点 时间=cur.next 入口; }尾插法示意图:
从任意结点插入
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 才能;真实; 以前,,}>示意图:
完整代码:
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怎么插入链表结点