206.反转链表/24(剑指offer)
1. 复制傀儡法
1. 双指针法
- 正确答案
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *cur=NULL,*pre=head;
while (pre != NULL) {
ListNode *t=pre->next;
pre->next=cur;
cur=pre;//
pre=t;
}
return cur;
}
};
- 看答案第一次默写结果
ListNode* cur=NULL,pre=head;//此处定义指针丢失*可以同时定义两个,必须要先初始化
while (pre != NULL) {
ListNode*t=pre->next;//思考此处需要定义t的原因,因为后面的这个指针被用到所以次处需要先保存
cur=pre->next;//此处
pre=cur;
t=pre;//此处三个完全写反,没有搞清楚指针的赋值,可以理解为此处是左侧指向右侧节点
}
return cur;
2.递归方法
反思
- 链表类题目用手画一下比较清楚
- a.next=b/a=b区别要搞清楚