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

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

这种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;
}

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

posted on 2017-11-29 12:23  newbird2017  阅读(85)  评论(0编辑  收藏  举报