用链表实现教材2.7.1节(42页)的线性表合并(也可以参考课件)。
输入要求
多组输入。
每组输入数据由3行组成。
第一行,输入两个整数a和b,分别代表链表的长度。
第二行和第三行,分别输入a个和b个整数。
详见代码和样例输入。
输出要求
见样例输出。每行最后一个整数后有一个空格。
空表用空行表示。
测试数据
输入示例
3 3
1 3 5
5 4 3
输出示例
la: 1 3 5 4
lb: 5 4 3
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType; // 元素数据类型
typedef struct LNode{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
void createLinkList(LinkList &list, int n); // 创建n个整数链表,顺序与用户输入一致
void printLinkList(LinkList list); // 打印顺序表
void mergeLinkList(LinkList &la, LinkList lb);// 实现 A=AUB
int main(){
int a,b;
while(~scanf("%d%d",&a,&b)){
LinkList la, lb, lc;
createLinkList(la, a);
createLinkList(lb, b);
mergeLinkList(la, lb);
printf("la: ");
printLinkList(la);
printf("lb: ");
printLinkList(lb);
}
}
************************************************************************************************************************
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType; // 元素数据类型
typedef struct LNode{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
void createLinkList(LinkList &list, int n); // 创建n个整数链表,顺序与用户输入一致
void printLinkList(LinkList list); // 打印顺序表
void mergeLinkList(LinkList &la, LinkList lb);// 实现 A=AUB
int main(){
int a,b;
while(~scanf("%d%d",&a,&b)){
LinkList la, lb, lc;
createLinkList(la, a);
createLinkList(lb, b);
mergeLinkList(la, lb);
printf("la: ");
printLinkList(la);
printf("lb: ");
printLinkList(lb);
}
}
void createLinkList(LinkList &list, int n){
list = new LNode;
list->next = NULL;
LNode *r = list;
for(int i=0;i<n;i++){
LinkList p;
p = new LNode;
scanf("%d",&p->data);
p->next = NULL;
r->next = p;
r = p;
}
}
void printLinkList(LinkList list){
LNode *p = list->next;
while(p){
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void mergeLinkList(LinkList &la, LinkList lb){
LinkList p =new LNode;
LinkList q = new LNode;
for(p = lb;p!=NULL;p=p->next){
int k=0;
for(q = la;q!= NULL;q = q->next){
if(p->data == q->data)
k = 1;
}
if(k == 0){
LinkList m = new LNode;
m = la;
LNode *k = new LNode;
k->data = p->data;
while(m->next)
m = m->next;
m->next = k;
k->next = NULL;
}
}
}