Swap nodes in pairs
Given a linked list, swap every two adjacent nodes and return its head.
给定一个链表,交换链表中相邻的结点,并返回其头部。也就是返回交换后的链表
不能只是单纯的改变节点内部的值,而是要实际的进行节点交换。
问题:对于链表的cur有点晕
迭代法
# 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:
res=ListNode()
res.next=head
if head==None:
return res.next
if head.next==None:
return head
cur=res
while cur.next!=None and cur.next.next!=None:
nxt=head.next
tmp=nxt.next
cur.next=nxt
head.next=nxt.next
nxt.next=head
cur=head
head=head.next
return res.next
(1)对于链表,先新建一个链表 res,将其连接到head上,返回值就取res.next就可以
(2)伤脑筋的地方是:先断哪个连接,再连哪个连接
(3)其实需要两个指针,cur和head
这里的tmp和nxt都是为了方便写,但是必须的就是cur和head
(4)跳出循环的条件。最开始写错了,写成了head.next!=None and head.next.next!=None, 这个条件会跳过最后一对。