Reverse Nodes in k Group

本文介绍了一种使用递归方法反转链表中连续K个节点的算法。通过定义两个辅助函数,一个用于反转K个节点,另一个用于遍历整个链表并应用该反转操作,实现高效地链表部分反转。详细步骤和代码示例帮助读者理解算法的实现过程。
ListNode *reverseGroup(ListNode * aHead,int k){
    ListNode dummy(-1);
    ListNode *pre = &dummy;
    pre->next = aHead;
    while(pre->next){
        tmp = pre->next;
        pre->next = reverseKListNode(pre->next,k);
        pre = tmp;
    }
    return dummy.next;
}

ListNode * reverseKListNode(ListNode * aHead,int k){// 能调用到这一步,aHead肯定不为NULL;
    ListNode *pre = aHead,*curPtr=pre->next,*nextPtr=NULL;
    for(int i = 0;(i < k)&&curPtr ;i++){
        nextPtr = curPtr -> next;
        curPtr -> next = pre;
        pre = curPtr;
        curPtr = next;
    }
    if( curPtr ) reutrn curPtr;
    return pre;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值