力扣206题目:反转链表,使用的是常规的解题思路,但是输出不正确,请问这边有什么错误呢
```python
class Node(object):
def __init__(self, value=None, next=None):
self.value = value
self.next = next
class linkedList(object):
def __init__(self):
self.head = Node() # 创建头指针结点
self.length = 0 # 初始链表长度,头指针节点不计入长度
def __len__(self): # 重写特殊方法返回self.length
return self.length
def head_insert(self, value): # 链表头部插入
node = Node(value)
if self.head.next == None:
self.head.next = node
node.next = None
else:
# 插入元素指针域指向原head元素
tmp_head = self.head.next # 原头指针节点存储到tmp_head
self.head.next = node # 新head指针指向node
node.next = tmp_head # 新插入节点指向原头指针节点
self.length += 1
def append(self, value): # 链表尾部添加结点
# 创建新插入的结点对象
node = Node(value)
if self.length == 0:
self.head.next = node # 只有一个节点,指针指向自己
else:
curnode = self.head.next # 变量curnode存放指针
while curnode.next != None:
curnode = curnode.next
curnode.next = node # 当为最后一个节点时,指针指向新插入节点
self.length += 1
def print_element(self):
cur = self.head
while cur:
print(cur.value)
cur = cur.next
dummy_node = Node(-1)
L = linkedList()
L.head = dummy_node
nums = [1, 2, 3, 4]
for i in range(len(nums)):
L.append(nums[i])
L.print_element()
if L.length == 2:
print('无需反转')
q = L.head
print(q.value)
p = q.next
print(p.value)
while p:
temp = p.next
print('temp:')
# print(temp.value)
p.next = q
print('p:')
# print(p.value)
q = p
print('q')
# print(q.value)
p = temp
print('p')
# print(p.value)
L.head = q
L.print_element()
```