#include <stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
void createlistR(LNode *&c,int a[],int n)
{
LNode *s,*r;
int i;
c=(LNode *)malloc(sizeof(LNode));
c->next=NULL;
r=c;
for(i=0;i<n;i++){
s=(LNode *)malloc(sizeof(LNode));
s->data=a[i];
r->next=s;
r=r->next;
}
r->next=NULL;
}
void createlistF(LNode *&c,int a[],int n)
{
LNode *s;
int i;
c=(LNode *)malloc(sizeof(LNode));
c->next=NULL;
for(i=0;i<n;i++){
s=(LNode *)malloc(sizeof(LNode));
s->data=a[i];
s->next=c->next;
c->next=s;
}
}
void print(LNode *c){
LNode *p;
p=c->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
}
合并
void merge(LNode *A,LNode *B,LNode *&C){
LNode *p=A->next;
LNode *q=B->next;
LNode *r;
C=A;
C->next=NULL;
free(B);
r=C;
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
r->next=p;p=p->next;
r=r->next;
}
else{
r->next=q;
q=q->next;
r=r->next;
}
}
r->next=NULL;
if(p!=NULL)
r->next=p;
else if(q!=NULL)
r->next=q;
}
主函数
int main(){
int a[]={3,5,8,11};
int b[]={2,6,8,9,11,15,20};
int a1=4;
int b1=7;
LNode *a2;
LNode *b2;
LNode *c;
a2=(LNode *)malloc(sizeof(LNode));
b2=(LNode *)malloc(sizeof(LNode));
c=(LNode *)malloc(sizeof(LNode));
createlistR(a2,a,a1);
createlistR(b2,b,b1);
print(a2);
print(b2);
merge(a2,b2,c);
print(c);
}