lc92-翻转链表2

linklist *reverseBetween(linklist *head,int m,int n){//一趟扫描,利用下标的特点,把m+1到n之间的结点用头插法倒置,m结点连接n+1
    linklist *p=head,*q,*k,*l;;
    int index=0;
    while(index<=n){
        if(indexnext;
            index++;
            continue;
        }
        if(index==m-1){
            q=p;
            p=p->next;
            index++;
            continue;
        }
        if(index==m){
            k=p;
            p=p->next;
            index++;
            continue;
        }
        if(index==n){
            k->next=p->next;
            p->next=q->next;
            q->next=p;
            index++;
            continue;
        }
        l=p->next;
        p->next=q->next;
        q->next=p;
        p=l;
        index++;
    }
    return head;
}

你可能感兴趣的:(lc92-翻转链表2)