温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python单链表如何反转

发布时间:2022-05-07 12:08:28 来源:亿速云 阅读:254 作者:iii 栏目:开发技术

这篇文章主要介绍“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单链表如何反转

反转过程如下:

python单链表如何反转

第一步: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单链表如何反转

第一步: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 设为“头节点”

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

python单链表如何反转

若干注意点:

(1)帮助记忆图:

python单链表如何反转

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

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

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

向AI问一下细节

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

AI