三个指针实现单链表反序输出
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