本文最后更新于634 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
题目链接/文章讲解/视频讲解:https://programmercarl.com/0206.%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.html
1.刚看到这个题我想的就是直接上去来一个虚拟头结点dummyHead 结果发现我的思路有点问题,想通了应该怎么进行反转链表,也想到了要储存下一个节点,但是思路在一个一个的next的时候有点混乱,但是比以前强多了。
2.看了代码随想录,发现我的思路复杂且有些问题,虚拟头结点的存在意义不大,使用双指针进行操作。
3.第一遍写的时候把pre的值赋成了head 其实应该是NULL,感觉对于链表的结构没有那么清晰的认知,属于是地动山摇 第二遍写的时候发现了另一个问题,return的时候我return head 结果总是少一个数,找了半天原因我甚至以为是因为循环的次数少了一次呢,结果是因为此时的头结点通过pre值的更新头结点已经变成pre了。
CPP
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *temp = new ListNode(0);
ListNode *cur = head;
ListNode *pre = NULL;
while(cur != NULL){
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
};