已知两个排列递增的单链表A和B,编写算法将它们合并成一个链表C而不改变其排序性
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node*next;
}Lnode,*Linklist;
Linklist init()
{
Lnode *s;
s=(Linklist)malloc(sizeof(Lnode));
s->data=0;
s->next=NULL;
return s;
}
Linklist creat()//输入时需满足是递增数列
{
Lnode *s,*r;
int x,flag=1;
Linklist L;
L=(Lnode *)malloc(sizeof(Lnode));//需开辟空间否则无法使数据存入进去
L->next=NULL;
r=L;
printf("please input the nums of table\n");
scanf("%d",&x);
while(flag)
{
s=(Linklist)malloc(sizeof(Lnode));
s->data=x;
s->next=NULL;
r->next=s;
r=s;
scanf("%d",&x);
if(x==-1)
flag=0;
}
return L;
}
Linklist result(Linklist A,Linklist B)//A,B含头结点
{
Lnode *p,*q,*s;
Linklist C;
p=A->next;q=B->next;//分别指向第一个结点
C=A;
s=C;
free(B);
while(p&&q)
{
if(p->data<q->data)
{
s->next=p;
s=p;
p=p->next;
}
else
{
s->next=q;