[](题解 | #反转链表#_牛客博客 (nowcoder.net))
# 反转链表
# -*- coding:utf-8 -*-
# 创建结点
# 创建结点
class Node:
def __init__(self, element=None):
self.element = element
self.next = None
class Show_Node:
# 根据输入的列表创建链表
def single_link(self, list_):
if not list_:
return Node()
for index, value in enumerate(list_):
if index == 0: # 首元素的插入
head = Node(value)
cur_ = head
else: # 后续元素的插入
cur_.next = Node(value)
cur_ = cur_.next
return head
# 以列表的形式查看链表
def traverse(self, node):
list_ = []
while node is not None: # 遍历所有节点
list_.append(node.element) # 结点元素填入列表
node = node.next
return list_
# 计算链表长度
def length_link(self, node):
cur = node
len_ = 0 # 计数
while cur is not None: # 遍历所有节点
len_ += 1 # 计数
cur = cur.next # cur指向下一个节点
return len_
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
while not pHead or not pHead.next:
return pHead
pre = None
node = pHead
while node:
tmp = node.next
node.next = pre
pre = node
node = tmp
return pre
show_code = Show_Node()
l = show_code.single_link([1, 2, 3])
s = Solution()
r = s.ReverseList(l)
print(show_code.traverse(r))
print(show_code.length_link(r))