首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python 两两交换链表中的节点 多种解法

python 两两交换链表中的节点 多种解法

作者头像
编程小白狼
发布2024-12-31 08:16:16
发布2024-12-31 08:16:16
2070
举报
文章被收录于专栏:编程小白狼编程小白狼

解法一:递归法 使用递归来交换链表中的节点。

代码语言:javascript
复制
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def swapPairs(head):
    if not head or not head.next:
        return head
  
    # 交换第一个节点和第二个节点
    first_node = head
    second_node = head.next
  
    first_node.next = swapPairs(second_node.next)
    second_node.next = first_node
  
    return second_node

解法二:迭代法 使用迭代来交换链表中的节点。

代码语言:javascript
复制
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def swapPairs(head):
    dummy = ListNode(0)  # 创建虚拟头节点
    dummy.next = head
    prev = dummy
    
    while head and head.next:
        # 要交换的两个节点
        first_node = head
        second_node = head.next

        # 交换节点
        prev.next = second_node
        first_node.next = second_node.next
        second_node.next = first_node

        # 更新指针
        prev = first_node
        head = first_node.next
      
    return dummy.next

解法三:指针法 使用指针法来交换链表中的节点。

代码语言:javascript
复制
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def swapPairs(head):
    dummy = ListNode(0)  # 创建虚拟头节点
    dummy.next = head
    prev = dummy
    
    while head and head.next:
        # 要交换的两个节点
        first_node = head
        second_node = head.next

        # 交换节点
        prev.next = second_node
        first_node.next = second_node.next
        second_node.next = first_node

        # 更新指针
        prev = first_node.next
        head = first_node.next.next
      
    return dummy.next
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档