应用题-链表专题-两两交换链表中的节点

管理员
**链表题目很重要的一点: 不要丢了前驱和后继信息。** ```python # 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: Optional[ListNode]) -> Optional[ListNode]: if not head: return None if not head.next: return head prv = None # prv表示已处理的链尾部 cur1 = head cur2 = cur1.next # cur1和cur2相邻 交换cur1和cur2 nxt = cur2.next # nxt表示未处理的链首部 # 更新head head = cur2 while cur2: # 将cur1和cur2分离出来 if prv: prv.next = None cur1.next = None cur2.next = None # 交换cur1和cur2 cur2.next = cur1 # 重新链接 if prv: prv.next = cur2 cur1.next = nxt # 更新记录值 prv = cur1 cur1 = cur1.next cur2 = cur1.next if cur1 else None nxt = cur2.next if cur2 else None return head ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧