void MergeListR(LNode *A,LNode *B,LNode* &C)//采用尾插法建表的链表归并 算法 (A,B为递增链表,C要求为单调不减链表)
{
LNode *r=NULL;
LNode *p=A->next;
LNode *q=B->next;
C=A;
C->next=NULL;
r=C;
free(B);
B=NULL;
while(p!=NULL && q!=NULL)
{
if(p->data <= q->data)
{
r->next=p;
r=p;
p=p->next;
}
else
{
r->next=q;
r=q;
q=q->next;
}
r->next=NULL;
}
if(NULL==p)
{
r->next=q;
}
else
{
r->next=p;
}
}
void MergeListH(LNode *A,LNode *B,LNode *&C)//采用头插法建表的链表归并 算法 (A,B为递增链表,C要求为单调不增链表)
{
LNode *s;
LNode *p=A->next;
LNode *q=B->next;
C=A;
C->next=NULL;
free(B);
B=NULL;
while(p!=NULL && q!=NULL)
{
if(p->data <= q->data)
{
s=p;
p=p->next;
s->next=C->next;
C->next=s;
}
else
{
s=q;
q=q->next;
s->next=C->next;
C->next=s;
}
}
while(NULL!=q)
{
s=q;
q=q->next;
s->next=C->next;
C->next=s;
}
while(NULL!=p)
{
s=p;
p=p->next;
s->next=C->next;
C->next=s;
}
}
{
LNode *r=NULL;
LNode *p=A->next;
LNode *q=B->next;
C=A;
C->next=NULL;
r=C;
free(B);
B=NULL;
while(p!=NULL && q!=NULL)
{
if(p->data <= q->data)
{
r->next=p;
r=p;
p=p->next;
}
else
{
r->next=q;
r=q;
q=q->next;
}
r->next=NULL;
}
if(NULL==p)
{
r->next=q;
}
else
{
r->next=p;
}
}
void MergeListH(LNode *A,LNode *B,LNode *&C)//采用头插法建表的链表归并 算法 (A,B为递增链表,C要求为单调不增链表)
{
LNode *s;
LNode *p=A->next;
LNode *q=B->next;
C=A;
C->next=NULL;
free(B);
B=NULL;
while(p!=NULL && q!=NULL)
{
if(p->data <= q->data)
{
s=p;
p=p->next;
s->next=C->next;
C->next=s;
}
else
{
s=q;
q=q->next;
s->next=C->next;
C->next=s;
}
}
while(NULL!=q)
{
s=q;
q=q->next;
s->next=C->next;
C->next=s;
}
while(NULL!=p)
{
s=p;
p=p->next;
s->next=C->next;
C->next=s;
}
}