赞
踩
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]
示例 2:
输入:head = [] 输出:[]
示例 3:
输入:head = [1] 输出:[1]
思路: 递归算法
递归终止条件是链表中无节点或只有一个节点
如果链表中多于两个节点,则将原始链表的头节点变成新链表的第二个节点,原始链表的第二个节点变成新链表的头节点。递归实现其余节点的交换。
- struct ListNode* swapPairs(struct ListNode* head){
- if(head==NULL || head->next==NULL)
- {
- return head;
- }
- struct ListNode *newhead=head->next;
- head->next=swapPairs(newhead->next);
- newhead->next=head;
- return newhead;
- }
如果对您有帮助的话点个赞呗~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。