欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

成对交换结点(swap-nodes-in-pairs)

程序员文章站 2022-03-08 23:40:28
...
  • 问题描述
    Given a linked list, swap every two adjacent nodes and return its head.
    For example,
    Given1->2->3->4, you should return the list as2->1->4->3.
    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
    交换相邻的两个节点,并返回头结点。
    要求不能改变节点的值,而是改变节点本身,且只能使用常量的空间。

  • 问题分析
    采用递归实现。
    若头结点head为空或head->next为空,那么返回head;
    否则改变结点指向,先令head->next指向pNext->next,再令pNext->next指向head,如下图所示:
    成对交换结点(swap-nodes-in-pairs)

  • 代码实现

class Solution {
public:
    ListNode *swapPairs(ListNode *head) {
        if(head==NULL || head->next==NULL) return head;
        else{
            ListNode *pNext=head->next;
            head->next=swapPairs(pNext->next);
            pNext->next=head;
            return pNext;
        }
    }
};
相关标签: 链表