代码实现
#include<malloc.h>
#include<iostream>
using namespace std;
//创建结点结构
typedef struct Lnode{
int data; //数据域
struct Lnode *next; //指针域
}Lnode,*Linklist;
//顺序创建链表
void createList(Linklist &L){
Linklist p,q; //辅助变量
L=(Linklist)malloc(sizeof(Lnode)); //为头结点L分配存储空间
L->next=NULL; //头结点置为空
q=L; //q指向L
p = (Linklist)malloc(sizeof(Lnode)); //为新结点P分配存储空间
cin>>p->data; //循环创建p、输入结点数据
while(p->data!=-10){
p->next=q->next;
q->next=p;
q=p;
p=(Linklist)malloc(sizeof(Lnode));
cin>>p->data;
}
}
//创建合并函数
void mergeList(Linklist &L1,Linklist L2){
Linklist p,q,r; //辅助变量
r=L1; //r指向L1头结点
p=L1->next; //p指向L1头结点所指向元素
q=L2->next; //q指向L2头结点所指向元素
while(p&&q){
if(p->data>=q->data){
r->next=q;
r=r->next;
q=q->next;
}
else{
r->next=p;
r=r->next;
p=p->next;
}
}
if(p) r->next=p;
if(q) r->next=q;
}
//输出链表元素
void printList(Linklist L){
Linklist p; //辅助变量
p=L->next;
while(p!=NULL){
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
//主函数
int main(){
Linklist La,Lb; //定义链表
cout<<"创建La--请输入元素,以-10结束:"<<endl;
createList(La);
cout<<endl;
cout<<"创建Lb--请输入元素,以-10结束:"<<endl;
createList(Lb);
cout<<endl;
cout<<"输出La验证:"<<endl;
printList(La);
cout<<endl;
cout<<"输出Lb验证:"<<endl;
printList(Lb);
cout<<endl;
//合并得链表Lc
mergeList(La,Lb);
cout<<"La、Lb合并为Lc,输出验证:"<<endl;
printList(La); //以La头结点开始进行合并,即合并在La中
}
运行结果