C:两两交换链表中的节点(需要执行实际的节点交换,并不是只交换数值)

两两交换链表中的相邻节点,并将交换后的链表返回

递归实现:递归两大要素: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;
}

递归的条件:一类重复操作,而且操作基数特别大的情况下,想通第一步,然后找到结束条件,将其余的操作交给计算机,是一类比较高效的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值