python实现单链表反转————指针法

三个指针实现单链表反序输出

class Node(object):
    def __init__(self, item, next=None):
        self.val = item
        self.next = next

#三个指针遍历反转
def reverse(head):
    #p、q指针指定先后两个节点
    if head == None:
        return None
    p = head
    q = p.next
    #将p反转指向空
    p.next = None
    #当后续节点存在时
    while q:
        #r表示未反转节点
        r = q.next
        #q反转指向p
        q.next = p
        #p、q节点后移,循环执行后面的操作
        p = q
        q = r
    #返回的是最后一个节点,即初始链表的尾结点
    return p

#测试用例
if __name__ == '__main__':
    li = Node(3)
    li.next = Node(2)
    li.next.next = Node(1)
    li.next.next.next = Node(9)
    l = reverse(li)
    print(l)
    print(l.val)
    print (l.val, l.next.val, l.next.next.val, l.next.next.next.val)


输出结果

<__main__.Node object at 0x0000026E9081FFD0>
9
9 1 2 3

参考https://blog.csdn.net/weixin_43409302/article/details/86415106?utm_source=app

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值