链表反转

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

原链表头: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。

发布了121 篇原创文章 · 获赞 67 · 访问量 35万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览