当前位置:   article > 正文

两两交换链表中的节点-C语言-LeetCode第24题_给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

思路: 递归算法

递归终止条件是链表中无节点或只有一个节点

如果链表中多于两个节点,则将原始链表的头节点变成新链表的第二个节点,原始链表的第二个节点变成新链表的头节点。递归实现其余节点的交换。

  1. struct ListNode* swapPairs(struct ListNode* head){
  2. if(head==NULL || head->next==NULL)
  3. {
  4. return head;
  5. }
  6. struct ListNode *newhead=head->next;
  7. head->next=swapPairs(newhead->next);
  8. newhead->next=head;
  9. return newhead;
  10. }

如果对您有帮助的话点个赞呗~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码秘术家/article/detail/61223
推荐阅读
相关标签
  

闽ICP备14008679号