翻转单链表 leetcode Reverse Linked List

时间:2021-06-19 21:51:26

翻转一个单链表。这个题目听说很多次了,总感觉肯定不是什么难题。

现在真的有点好高骛远了!总感觉那种很难的算法题才是难题,这种题没必要做。其实眼高手低啊。

这种easy题,我都不能一遍ac,这遇到白板编程也是挂的节奏!

仔细分析,每次翻转一个,要记录被反转的这个的前后节点。

1 -> 2 -> 3 -> 4

用p记录当前要改变其next指针的节点。last 指向前一个节点。pre指向后一个节点。

初始化,last = NULL。

struct ListNode* reverse(struct ListNode *head)
{
struct ListNode *p,*last,*pre; p = head;
last = NULL;
while(p)
{
pre = p->next;
p->next = last;
last = p;
p = pre;
}
return last;
}

看别人代码是一个感觉,自己写真的是另一种感觉!