链表
1. 重点知识
(1) 如何翻转链表
基本原则:1. 逐点进行; 2. 需要清楚三个节点:当前节点curt,前继节点prev,下一个节点next。
主要分三步:
- 将curt->next先保存下来;
- 将prev赋值给curt->next;
- prev向前移到curt, curt向前移到curt->next。
代码示例:
ListNode * reverse(ListNode * head) {
//prev指向前继节点,head指向当前节点
ListNode *prev = nullptr;
//开始逐节点翻转
while (nullptr != head) {
//tmp记录下一个节点,head是当前节点
ListNode *tmp = head->next;
head->next = prev;
prev = head;
head = tmp;
}
return prev;
}
这里给一道很典型的例题:
【链表与数组】Lintcode 35.翻转链表
(2) 什么时候使用dummy节点
dummy节点:dummy-&