- 203 移除链表元素
虚拟头指针dummyhead
需要考虑头结点和尾结点,头结点用dummyhead可以解决,尾结点需要确定是哪个指针!= null,画个图
if满足条件则移除链表,else指针正常向后移(写的时候else忘记了,会报错)
- 707 设计链表
好ex的题,,这辈子不想再做第二遍……
定义链表的代码要背一下
class ListNode{
int val;
ListNode next;
ListNode (){};
ListNode(int val){
this.val = val;
}
} //链表定义
主要代码是三个部分:
1、获取第n个节点的值
2、在第n个节点之前插入新的节点
3、删除第n个节点
易错点是for循环什么情况下结束,i是小于index还是小于等于index,以及节点是从0开始计数的,更容易错了
容易忽略的地方是需要判断给出的index是否为有效节点,即index<0和index>=size的情况
- 206 反转链表
ListNode current = new ListNode();
易错点1:初始化,current初始化为head,pre初始化为null(如果pre没有初始化Null则输出会的链表最后会多一个0)
易错点2:return什么,while()内的判断条件是current != null,即current==null时循环停止,此时current指向null,pre指向原链表的最后一个节点即新链表的第一个节点,所以最后return的是pre而非current
还是要画图