a.h文件: typedef struct node { int data; struct node * next; }linklist,*link; linklist * createlink(); void printf_linklist(link &l); a.cpp文件 #include<stdio.h> #include<malloc.h> #include"a.h" linklist * createlink() { linklist *s,*t,*p; int b; p=NULL; t=p; printf("请输入想要创建顺序为从小到大的单链表,并以“0”结束输入/n"); scanf("%d",&b); while(b!=0) { s=(linklist *)malloc(sizeof(linklist)); s->data=b; if(p==NULL)p=s; else t->next=s; t=s; scanf("%d",&b); } t->next=NULL; return p; } void printf_linklist(link &l) { int i; linklist *z; z=l; while(z!=NULL) { i=z->data; printf("%d ",i); z=z->next; } } main.cpp 文件 #include<stdio.h> #include<malloc.h> #include"a.h" int main(void) { linklist *la,*lb,*lc,*lchead,* c; lc=(linklist *)malloc(sizeof(linklist)); lchead=lc; la=createlink(); lb=createlink(); while(la&&lb) { if(la->data<=lb->data) { lc->data=la->data; la=la->next; c=(linklist *)malloc(sizeof(linklist)); lc->next=c; lc=lc->next; } else { lc->data=lb->data; lb=lb->next; c=(linklist *)malloc(sizeof(linklist)); lc->next=c; lc=lc->next; } } if(lb!=NULL) { lc->data=lb->data; lc->next=lb->next; } if(la!=NULL) { lc->data=la->data; lc->next=la->next; } printf_linklist(lchead); return 0; } 实验结果截图: