#include<stdio.h>
#include<stdlib.h>
#define size 5
typedef struct LNode{ //定义单链表结点类型
int data; //数据域,可以是别的各种数据类型,本文统一用int类型
struct LNode *next; //指针域
}LNode, *LinkList;
//创建头节点,初始化单链表
void initlist(LinkList &L){
L=(LNode *)malloc(sizeof(LNode));
L->next ==NULL;
}
//头插法
void create(LinkList &L,int n){
initlist(L);
int i;
LinkList p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&p->data );
L->next =p;
p->next =NULL;
for(i=0;i<n-1;i++){
LinkList s=(LNode *)malloc(sizeof(LNode));
scanf("%d",&s->data );
s->next =L->next ;
L->next =s;
}
}
void insert(LinkList &L,int e,int x){
LinkList p,r;
p=L;
initlist(r);
r->data =x;
int i;
if(e<1&&e>L->data ){
printf("error");
}
else {
for(i=0;i<e-1;i++){
p=p->next ;
}
r->next =p->next;
p->next =r;
}
}
//尾插法
void produce(LinkList &L,int n){
initlist(L);
int i;
LinkList r=L;
for(i=0;i<n;i++){
LinkList p=(LNode*)malloc(sizeof(LNode));
scanf("%d",&p->data );
p->next =NULL;
r->next =p;
r=p;
}
}
void combine(LinkList &L,LinkList &Y){
LinkList p,q;
p=L->next ;
q=Y->next ;
int i,j,t;
for(j=0;j<Y->data ;j++){
t=0;
for(i=0;i<L->data ;i++){
if(p->data ==q->data )
{t++;
}
p=p->next ;
}
p=L->next ;
if(t==0){
insert(L,L->data+1 ,q->data );
L->data ++;
}
q=q->next ;
}
}
int main(){
LinkList L,Y;
int m,n,i,x;
printf("请输入L表长:");
scanf("%d",&n);
printf("请输入L表中元素:");
produce(L,n);
L->data =n;
printf("请输入Y表长:");
scanf("%d",&m);
printf("请输入Y表中元素:");
produce(Y,m);
Y->data =m;
combine(L,Y);
x=L->data;
L=L->next;
printf("展示:");
for(i=0;i<x;i++){
printf("%d ",L->data );
L=L->next ;
}
printf("\n");
Y=Y->next;
printf("展示:");
for(i=0;i<m;i++){
printf("%d ",Y->data );
Y=Y->next ;
}
return 0;
}
08-03
647
12-07
1434
04-26
1176
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交