单链表的反转 python实现实例

Posted ~天天向上~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的反转 python实现实例相关的知识,希望对你有一定的参考价值。

单链表反转实现

1、递归实现

  根据递归,递归到最后一个节点(条件为head3为非空,其下一个指向为空),将其next指向前一个结点,前一个结点的指向为None。

 

 

 

def recurse(head, newhead):  # 递归,head为原链表的头结点,newhead为反转后链表的头结点
        if head is None:
            return
        if head.next is None:
            newhead = head
        else:
            newhead = recurse(head.next, newhead)
            head.next.next = head
            head.next = None
        return newhead

注释:原来链表为{1,2,3,4}

head指向为1,pHead1=head.next   pHead2=pHead1.next    pHead3=pHead2.next

a、递归最后实现newhead=phead3

b、回到上次递归的结束下方

2、循环实现

    def ReverseList(self, pHead):
        if pHead is None or pHead.next is None:
            return pHead
        pre = None
        cur = pHead
        h = pHead
        while cur:
            h = cur
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp
        return h

 

以上是关于单链表的反转 python实现实例的主要内容,如果未能解决你的问题,请参考以下文章

高效代码之反转单链表

Java手写单链表的反转

理解单链表的反转(java实现)

Java算法 -- 单链表的反转单链表实现栈和队列以及双端队列K 个一组翻转链表

Java算法 -- 单链表的反转单链表实现栈和队列以及双端队列K 个一组翻转链表

Java算法 -- 单链表的反转单链表实现栈和队列以及双端队列K 个一组翻转链表