lc25-k个一组翻转链表

linklist *reverseKGroup(linklist *head,int k){//k个一组翻转链表
    linklist *p=head,*q=head,*m,*l=head->next,*w;
    //p,q为已翻转好链表的表尾,利用q向后移动,当移动到第k个时,记录第k+1个位置和p之后的位置,令p指向第k+1个位置,然后将要翻转的k个链表结点用头插法插入
    //然后更新p,q,和记录的位置,当q为NULL时退出循环
    int n=k;
    while(q!=NULL){
        while(n--!=0){
            q=q->next;
            if(q==NULL){
                return head;
            }
        }
        n=k;
        m=q->next;
        p->next=m;
        while(l!=q){
            w=l->next;
            l->next=p->next;
            p->next=l;
            l=w;

        }
        l->next=p->next;
        p->next=l;
        while(p->next!=m){
            p=p->next;
        }
        q=p;
        l=p->next;
    }
    return head;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容