两两交换链表中的相邻节点,并将交换后的链表返回
递归实现:递归两大要素:1.结束条件,2.要执行的操作。
1.返回条件:当传入的头为空,或者头的下一个为空时,返回。(也就是交换全部完成)
2.需要执行的操作,将head挂在head->next->next上,将head->next挂回head上,然后将head移到head->next->next上,(也就是移到n->next上),当全部交换完之后,将头节点返回。
struct ListNode* swapPairs(struct ListNode* head){
if(head == NULL || head->next==NULL)
{
return head;
}
struct ListNode* n;
n=head->next;
head->next=swapPairs(n->next);
n->next=head;
return n;
}
递归的条件:一类重复操作,而且操作基数特别大的情况下,想通第一步,然后找到结束条件,将其余的操作交给计算机,是一类比较高效的算法。