编辑代码

#define DATATYPE2 char  
typedef stryct 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 *INITAte( )
{   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(NULL);
    }
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->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 DALETE(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;
    }
}
main()
{   LINKLIST *head,*p;
    char ch;
    head=hcreate();
    print(head);
    printf("\n");
    INSERT(head,1,'m');
    print(head);
    printf("\n");
    ch=GET(head,1);
    printf("%c",ch);
    printf("\n");
    p=LOCATE(head.'m');
    printf("%c",p->data);
    printf("\n");
    DELETE(head,1);
    print(head);
    printf("\n");
    printf("%d",LENGTH(head));
}