链表反转

来源:互联网 发布:win7 vb 对象库未注册 编辑:程序博客网 时间:2024/05/16 15:20

链表反转是面试常考问题,这里做个总结:

原链表头:pHead

新链表头:p_next

附代码:

    def ReverseList(pHead):        p_next = None        while(pHead is not None):            p = pHead            pHead = pHead.next            p.next = p_next            p_next = p        return p_next

每轮循环开始,pHead拷贝给p,p再连接上p_next。单次循环结束前,再将p_next = p,从而更新p_next,为下一次循环做准备。

有人可能会觉得奇怪,既然循环结束前都有 p_next = p,那么为什么不能 return  p?

原因是,如果输入的pHead链表为空,则无法进入循环,考虑到鲁棒性,应当返回 p_next。

0 0
原创粉丝点击