编辑代码

#include <stdio.h>
#include "malloc.h"
#define DATATYPE2 char 
typedef struct node
{
    DATATYPE2 data;
    struct node *next;
}LINKLIST;

LINKLIST *rcreate()
{
    LINKLIST *head,*last,*p;
    char ch;
    p=(LINKLIST *)malloc(sizeof(LINKLIST));
    head=p;
    last=p;
    p->next=NULL;
    while((ch=getchar())!='\n')
    {
        p=(LINKLIST *)malloc(sizeof(LINKLIST));
        p->data=ch;
        last->next=p;
        last=p;
        p->next=NULL;
    }
    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("%c ",p->data);
        p=p->next;
    }
}

int main()
{
    LINKLIST *LA,*LB,*LC,*p;
    LINKLIST *pa,*pb,*pc;
    printf("请输入LA里的有序内容:");
    LA=rcreate();
    printf("请输入LB里的有序内容:");
    LB=rcreate();
 /*   print(LA);
    printf("\n");
    print(LB);*/
    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;
}