typedef struct node
{
DATATYPE2 data;
struct node *next;
}LINKLIST;
LINKLIST *rcreate()
{
LINKLIST *head,*last,*p;
int ch;
p=(LINKLIST *)malloc(sizeof(LINKLIST));
head=p;
last=p;
p->next=NULL;
scanf("%d",&ch);
while(ch!=-99)
{
p=(LINKLIST *)malloc(sizeof(LINKLIST));
p->data=ch;
last->next=p;
last=p;
p->next=NULL;
scanf("%d",&ch);
}
return(head);
}
LINKLIST *hcreate()
{
LINKLIST *head,*p;
char ch;
head=(LINKLIST *)malloc(sizeof(LINKLIST));
head->next=NULL;
while( ( ch=getchar( ) )!='\n')
{
p=( LINKLIST *)malloc( sizeof(LINKLIST));
p->data=ch;
p->next=head->next;
head->next=p;
}
return(head);
}
LINKLIST *INITIATE()
{
LINKLIST *head;
head=(LINKLIST *)malloc(sizeof(LINKLIST));
head->next=NULL;
return(head);
}
int LENGTH(LINKLIST *head)
{
int i;
LINKLIST *p;
p=head;
i=0;
while(p->next!=NULL)
{
p=p->next;
i++;
}
return(i);
}
DATATYPE2 GET(LINKLIST *head,int i)
{
int j;
LINKLIST *p;
j=0;
p=head;
while ((j<i) && (p->next!=NULL))
{
p=p->next;
j=j+1;
}
if(j==1)
return (p->data);
else
return(1);
}
LINKLIST *LOCATE(LINKLIST *head,DATATYPE2 x)
{
LINKLIST *p;
p=head->next;
while(p!=NULL&&p->data!=x)
p=p->next;
return(p);
}
void INSERT(LINKLIST *head,int i,DATATYPE2 x)
{
int j;
LINKLIST *h,*p;
h=(LINKLIST*)malloc(sizeof(LINKLIST));
h->data=x;
h->next=NULL;
p=head;
j=0;
while((p->next!=NULL)&&(j<i-1))
{
p=p->next;
j=j+1;
}
if(j==i-1)
{
h->next=p->next;
p->next=h;
}
else
printf("insert fail");
}
void DELETE(LINKLIST *head,int i)
{
int j;
LINKLIST *p,*q;
p=head;
j=0;
while((p->next!=NULL)&&(j<i-1))
{
p=p->next;
j=j+1;
}
if((p->next!=NULL)&&(j==i-1))
{
q=p->next;
p->next=q->next;
free(q);
}
else
printf("delete fail");
}
int EMPTY(LINKLIST *head)
{
if(head->next==NULL)
return(1);
else
return(0);
}
void print(LINKLIST *head)
{
LINKLIST *p;
p=head->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
int main()
{
LINKLIST *LA,*LB,*LC,*p;
LINKLIST *pa,*pb,*pc;
printf("请输入LA里的有序内容:");
LA=rcreate();
printf("请输入LB里的有序内容:");
LB=rcreate();
pa=LA->next;
pb=LB->next;
LC=INITIATE();
pc=LC;
while(pa!=NULL&&pb!=NULL)
{
p=(LINKLIST *)malloc(sizeof(LINKLIST));
pc->next=p;
pc=pc->next;
if(pa->data<pb->data)
{ p->data=pa->data;
pa=pa->next;
}
else
{ p->data=pb->data;
pb=pb->next;
}
}
if(pa==NULL)
pc->next=pb;
else
pc->next=pa;
print(LC);
return 0;
}