有两个链表L(x1,x2,x3……)L1(y1,y2,y3……)将L和L1合并传成L2(x1,y1,x2,y2……)(优先排x,元素个数可以不一样)
代码
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
node *next;
}Node;
void Creat(Node *L)
{
node *s,*tc=L;
printf("请输入元素个数n:");
int n,i;
scanf("%d", &n);
while(n--){
s=(Node*)malloc(sizeof(Node));
scanf("%d",&s->data );
tc->next =s;
tc=s;
}
tc->next =NULL;
}
int DisList(Node *L)
{
if(L->next == NULL) return 0;
node *p=L->next ;
while(p != NULL){
printf("%d ", p->data );
p=p->next ;
}
printf("\n");
return 1;
}
Node *Insert(Node *L,Node *L1)
{
Node *L3,*s,*s1,*tc;
L3=(Node*)malloc(sizeof(Node));
tc=L3;
Node *p=L->next ,*p1=L1->next ;
while(p != NULL && p1 != NULL){
s=(Node*)malloc(sizeof(Node));
s->data =p->data;
tc->next =s;
tc=s;
p=p->next ;
s1=(Node*)malloc(sizeof(Node));
s1->data =p1->data;
tc->next =s1;
tc=s1;
p1=p1->next ;
}
tc->next =NULL;
if(p == NULL && p1 != NULL){
while(p1 != NULL){
s1=(Node*)malloc(sizeof(Node));
s1->data =p1->data;
tc->next =s1;
tc=s1;
p1=p1->next ;
}
tc->next =NULL;
}
if(p1 == NULL && p != NULL){
while(p != NULL){
s=(Node*)malloc(sizeof(Node));
s->data =p->data;
tc->next =s;
tc=s;
p=p->next ;
}
tc->next =NULL;
}
return L3;
}
int main()
{
Node *L=(Node*)malloc(sizeof(Node));
Node *L1=(Node*)malloc(sizeof(Node));
Node *L2=(Node*)malloc(sizeof(Node));
Creat(L);
Creat(L1);
L2=Insert(L,L1);
DisList(L2);
return 0;
}