单链表定义:链表中的多个元素相互连接,有多个结点(节点),每个节点由数据区域和指针区域组成。一个节点只能有一个后继
Java是如何构造链表
根据链表的定义,Java中的链表构造如下:
public class ListNode{
public int val;
public ListNode next;
public ListNode(int x){
val = x;
next = null;
}
}
链表增加节点
1、链表表头插入节点时,head头节点重新指向新的表头newNode
newNode.next = head;//插入的节点指向头节点
head = newNode;//head重新指向新表头
2、链表中间插入节点,由于链表中一个节点指能有一个后继,西面的顺序不能颠倒,必须先执行第一步才能执行第二步,若是先执行第二步,则无法找到指向目标节点的指针
nodeInsert.next = pNode.next;//pNode为目标节点的前一个节点
pNode.next = nodeInsert;
3、链表结尾插入节点,没有要注意的,让尾节点指向新的节点即可。代码可以执行第二步的,nodeInsert.next 为null
链表删除节点
1、链表表头删除时,直接将头结点变成下一个节点即可
head = head.next;
2、链表中间删除时,和插入节点一样的思路,先找到目标节点的前一个几点(前驱节点),然后将前驱节点指向目标节点的后一个节点即可
cur.next = cur.next.next;//cur为前驱节点
3、链表结尾删除节点,找到前驱节点后,将其指针置为null,代码可复用删除中间,这种情况下cur.next.next为null