链表的概念及结构

首先我们知道链表在逻辑上是有前后关系的,在物理结构上不保证有前后关系,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。
在实际中,链表的结构非常多样,要学习链表就要知道链表常用的变量的含义,在链表中会使用head代表链表的第一个节点,通过第一个节点就可以找到完整的链表的所有节点,所以,链表的第一个节点往往代表整个链表,空链表就是一个节点都没有的链表,也就没有第一个节点,head=null表示第一个节点不存在,也就是整个链表为空链表。
关于链表的基本操作一般有以下几种:
链表的头插:
1.如果要插入的数据没有节点,先给它装入一个节点
Node node=new Node();
node.value=0;
2.让原来的第一个节点成为新节点的下一个节点
node.next=head;
3.更新最新的第一个节点为新节点
head=node;
链表的尾插:
链表的尾插和头插不同,需要分情况讨论,看链表是空链表还是非空链表,对于空链表来说,尾插就和头插的处理方法一样,对于非空链表来说,分为以下具体步骤来实现:
1.如果没有在节点中,装到节点里,让新的节点的next=null; Node node=new Node(val); 构造方法中已经让.next=null了。
2.找到倒数第一个节点(找到.next=null的节点)
Node last=head;
while(last.next!=null)
{
last=last.next;
}
last就是最后一个节点。
3.让原来的倒数第一个节点的下一个节点为新节点
last.next=node;
链表的头删:
链表的头删比较简单,就是将head往后移一个就可以实现了,head=head.next;
l链表的尾删:
链表的尾删也要分情况讨论,分为1)只有一个节点,2)有两个及两个以上节点,具体实现的代码如下所示:

private Node  popBack(Node   head)
{if(head==null)
  {
      System.out.println("空链表无法删除");
	  return ;
  }
   if(head.next==null)
   {
      return null;
   }
   else
   {
     Node  lastSecond=head;
	 while(lastSecond.next.next!=null)
	 {
	    lastSecond=lastSecond.next;
	 }
	 lastSecond.next=null;
	 return head;
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值