美文网首页
两两交换链表中的节点

两两交换链表中的节点

作者: D_w | 来源:发表于2022-04-29 15:34 被阅读0次

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

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


    image.png

    思路

    建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。看图,这个使用代码随想录的图


    image.png

    不过写代码时步骤可以翻过来以3,2,1的顺序写,这样就不用创建临时变量存储节点了

    # 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(next=head)
            pre = res
    
            # 必须有pre的下一个和下下个才能交换,否则说明已经交换结束了
            while pre.next and pre.next.next:
                cur = pre.next
                post = pre.next.next
    
                # pre,cur,post对应最左,中间的,最右边的节点
                cur.next = post.next
                post.next = cur
                pre.next = post
    
                cur = cur.next.next
            return res.next
    

    相关文章

      网友评论

          本文标题:两两交换链表中的节点

          本文链接:https://www.haomeiwen.com/subject/jjusyrtx.html