/*单链表的合并递增输出*/
#include<stdio.h>
typedef struct node
{
int data;
struct node *next;
}Linknode,*Linklist;
Linklist creat()
/*创建链表*/
{
Linklist Head;
Linknode *End,*New;
Head=(Linklist) malloc(sizeof(Linknode));
End=New=Head;
int x;
scanf("%d",&x);
while(x!=0)
{
New=(Linklist) malloc(sizeof(Linknode));
New->data=x;
End->next=New;
End=New;
scanf("%d",&x);
}
End->next=NULL;
return Head;
}
void output(Linklist L)
/*输出链表*/
{
Linknode *p;
p=L->next;
while(p!=NULL)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
void Merge(Linklist A,Linklist B)
/*链表合并*/
{
Linklist p,q,r;
p=A->next;
q=B->next;
r=A;
while(p&&q)
if(p->data <= q->data)
{
r->next=p;
r=p;
p=p->next;
}
else
{
r->next=q;
r=q;
q=q->next;
}
if(p==NULL)
p=q;
r->next=p;
free(B);
}
main()
{
Linklist A,B,C;
A=creat();
output(A);
B=creat();
output(B);
Merge(A,B);
output(A);
}
单链表的合并递增输出
最新推荐文章于 2023-04-26 11:31:40 发布