编辑代码

#define DATATYPE2 char
typedef struct node
{   DATATYPE2 data;
    struct node *next;
}LINKLIST;

#include<stdio.h>
#include<malloc.h>
int main(){
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 *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);

}
DATATPYE2 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==i)
        return (p->data);
    else
        return(NULL);
}
LINKLIST *LOCATE(LINKLIST *head,DATATPYE2 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==j-1)
{   h->next=p->next;
    p->next=h;
}
else
    printf("insert fail");
}
void DELETE(LINJLIST *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;
    }
}