翻转一个单链表。这个题目听说很多次了,总感觉肯定不是什么难题。
现在真的有点好高骛远了!总感觉那种很难的算法题才是难题,这种题没必要做。其实眼高手低啊。
这种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;
}
看别人代码是一个感觉,自己写真的是另一种感觉!