单链表

/*
将两个递增有序的单链表合并成一个递减有序的单链表,并且使时间复杂度为两个链表的长度之和
**/

linknode merge(likn A,link B){

    linknode *pa,*pb,*p,*L;
    L->next=NULL;
    pa=A.head->next;
    pb=b.head->next;
    while(pa!=NULL&&pb!=NULL){
        
        if(pa->data>pb->data){
            p=pa->next;
            pa->next=L;
            L=pa;
            pa=p;
        }
        else{
            p=pb->next;
            pb->next=L;
            L=pb;
            pb=p;
        }
    }
    while(pa!=NULL&&pb==NULL){
        p=pa->next;
        pa->next=L;
        L=pa;
        pa=p;
    }
    while(pa==NULL&&pb!=NULL){
        p=pb->next;
        pb->next=L;
        L=pb;
        pb=p;
	}
    return L;
}
/*
实现单链表的就地倒置
*/
void reverse(link &L){
    link *p,*u;
    p=NULL;
    while(L->next!=NULL){
        u=L->next;
        L->next=u->next;
        u->next=p;
        p=u;
    }
}

posted @ 2021-08-07 17:16  CNPolaris  阅读(33)  评论(0)    收藏  举报