欢迎关注我的 B 站,配合视频收看更加:刷题论 01|链表题为什么这么难?
链表题为什么不容易写对?
反转链表、合并有序链表这类简单题,在面试中能写对的人寥寥。
被指针的 next 绕晕,next.next 等
for (cur.next && cur.next.next) {
first := cur.next;
second := cur.next.next;
first.next = second.next;
cur.next = second;
cur.next.next = first;
cur = cur.next.next;
}// 变量赋值给指针,表示 p 的 next 存储了 q 的内存地址
p.next = q
// 插入
// head => b, head => c => b
c.next = head.next
head.next = c
// 删除
p.next = p.next.next
// 遍历,与数组不同的是,需要根据指针去找下一个节点
for head != nil {
head = head.next
}// 反转链表
// a b => c
// a <= b c
next := b.next
b.next = a链表内部有变化,结果需要返回链表的头节点
// 合并有序链表,k个一组反转链表,删除倒数第n个节点
p.next = head
for (head != nil) {
// 遍历链表,删除、插入等操作
head = head.next
}
return p.nextLeetBook:https://leetcode.cn/leetbook/detail/linked-list/