首先尝试的方法是不断的将后一个节点移动到前一个节点前面,在pycharm中调试通过,但是leetcode报错。代码如下
class Node:
def __init__(self,val=None,next=None):
self.val = val
self.next = next
node1 = Node(1)
node2 = Node(2)
node6 = Node(6)
node4 = Node(4)
node5 = Node(5)
node3 = Node(3)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
if __name__ == '__main__':
dummy = Node(-1,node1)
cur = dummy
while node1.next != None:
temp = node1.next.next
temp1 = node1.next
node1.next.next = cur.next
node1.next = temp
cur.next = temp1
result = cur.next
由于上述方法不通过,参考了网上的方法,通过修改节点的指向方向,即可完成本题
class Node:
def __init__(self,val=None,next=None):
self.val = val
self.next = next
node1 = Node(1)
node2 = Node(2)
node6 = Node(6)
node4 = Node(4)
node5 = Node(5)
node3 = Node(3)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
if __name__ == '__main__':
pre = None
cur = node1
while cur != None:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
result = pre