1.链表的概念
每个结点有一个指向后续结点的next指针,最后一个元素的next指向null
第一个节点称为头节点
虚拟节点dummyNode,其next指针指向head,dummyNode.next=head。 dummyNode.val一般不会使用,设置成0或者-1。其作用是为了方便我们处理首部结点。
2.创建链表
JVM栈区存引用(指向实际对象的地址) 堆区创建对象
public class Course{
int val;
Course next;
}
leetcode里创建对象
3.链表的增删改查
1.遍历
public static int getListLength(Node node){
int length = 0;
Node node = head;
while(node != null){
length++;
node=node.next;
}
return length;
}
2.插入
1.在链表的表头插入
head需要重新指向表头
newNode.next=head; head=newNode;
2.在链表中间插入
3.在单链表结尾插入
整体实现代码:
3.删除
1.删除头节点
head=head.next
2.删除最后一个节点
cur.next=null
3.删除中间节点
cur.next=cur.next.next