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