2. 24 两两交换链表中的节点
24. 两两交换链表中的节点
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
"""
:param head: 链表的头结点
:return:
每一个节点由其val和指向下一个节点的指针构成
self本身指向链表开始位置,但其没有next属性
我们让pre指向self,pre.nex指向head来增加next属性
因此pre, pre.next = self, head
要链表从 pre -> a -> b -> b.next 变为 pre -> b -> a -> b.next
pre.next, b.next = b, a
b.next, a.next = a, b.next
"""
pre, pre.next = self, head
while pre.next and pre.next.next:
a = pre.next
b = a.next
pre.next, b.next, a.next = b, a, b.next
pre = a
return self.next