题解 | #反转链表#
反转链表
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
唉 最后看答案 。 然后默写 换是写不出来。