题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { if (pHead == nullptr) return nullptr; ListNode* cur = pHead; ListNode* pre = nullptr; ListNode* temp = nullptr; while (cur) { temp = cur->next; cur->next= pre; pre = cur; // 指针替换 //temp->next=pre; cur = temp; temp= nullptr; } return pre; } };
我感觉自己做题有一种脑干缺掉的感觉,有时候都怀疑是不是真的适合做程序员 ,没有一点点逻辑
在刚开始做这个题目的时候 想法 (想想笨死了)
初始想法一
1 怎末做 ? 链表转换是不是的 不断循环
2 循环找到第一个和最后一个交换。可是第二个怎办? 是不是的记一下链表数据。然后每次找的时候 首端加1 尾端减一
想法二
1 循环 然后第一个和第二个换 第二个和第三个换 以此类推。
每次循环后 交换次数减1 我期望的过程是 123 - 》 213 -》 231 -》此步骤交换次数减 1 321
唉 最后看答案 。 然后默写 换是写不出来。