24. 两两交换链表中的节点

Posted on 2022-06-27 16:31  林安静  阅读(35)  评论(0)    收藏  举报

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 

没太大难度,仅仅需要模拟操作即可,直接交换

注意点为:本方法需要主要链接时机,引入了一个temp指针指向上一对交换节点的靠后的那个节点,再指向现在这对需要交换的节点(否则会断裂)

当然本质上和随想录的三个指针控制的方法相同

problems/0024.两两交换链表中的节点.md · programmercarl/leetcode-master(代码随想录出品) - Gitee.com

只是没用virtual_head显得有点啰嗦

结束条件为,节点是否成对,不成对则结束即可

 1 class Solution:
 2     def swapPairs(self, head: ListNode) -> ListNode:
 3         if head is None:
 4             return None
 5         if head.next is None:
 6             return head
 7         new_head = head.next
 8         p = head
 9         temp_p = p
10         while p is not None and p.next is not None:
11             q = p.next
12             temp_p.next = q
13             p.next = q.next
14             q.next = p
15             temp_p = p
16             p = p.next
17         return new_head