python单链表如何反转

这篇文章主要介绍“python单链表如何反转”,在日常操作中,相信很多人在python单链表如何反转问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python单链表如何反转”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

代码如下:

class Node(object):
    def __init__(self, elem, next_=None):
        self.elem = elem
        self.next = next_
 
def reverseList(head):
    if head == None or head.next==None:  # 若链表为空或者仅一个数就直接返回
        return head 
    pre = None
    next = None
    while(head != None): 
        next = head.next     # 1
        head.next = pre     # 2
        pre = head      # 3
        head = next      # 4
    return pre

if __name__ == '__main__':
    l1 = Node(3)    # 建立链表3->2->1->9->None
    l1.next = Node(2)
    l1.next.next = Node(1)
    l1.next.next.next = Node(9)
    l = reverseList(l1)
    print (l.elem, l.next.elem, l.next.next.elem, l.next.next.next.elem)

原始单链表:

python单链表如何反转  python 第1张

反转后单链表:

python单链表如何反转  python 第2张

反转过程如下:

第一步:next = head.next
将 head.next 赋值给 next 变量,即next 指向了节点2,先将节点2 保存起来。

第二步:head.next = pre (初始pre==None)
将 pre 变量赋值给 head.next,即 此时节点1 指向了 None

第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点1,将节点1 设为“上一个节点”

第四步:head = next
将 next 赋值给 head,即 head 指向了节点2,此时节点2 设为“头节点”

第一次循环完毕,进入第二次循环,如下图:

python单链表如何反转  python 第3张

第一步:next = head.next
将 head.next 赋值给 next 变量,即 next 指向了节点3,先将节点3 保存起来。

第二步:head.next = pre (此时的pre已经不为None)
将 pre 赋值给 head.next,pre 在上一次循环的时候指向了节点1,那么这一步的意义就是节点2 指向了 节点1,完成1和2节点的反转。

第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点2,将节点2 设为“上一个节点”

第四步:head = next
将 next 赋值给 head,即 head 指向了节点3。此时节点3 设为“头节点”

第二次循环完毕,以此类推!第三次第四次第五次循环。最后反转成如下图

若干注意点:

(1)帮助记忆图:

python单链表如何反转  python 第4张

(2)当前头节点的下一个节点一定要保存(比如:当前头节点为2,先将节点3 保存起来)

(3)实现反转的key point: head.next = pre

到此,关于“python单链表如何反转”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接