typedef struct node
{ DATATYPE2 data;
struct node* next;
}LINKLIST;
LINKLIST * rcreate()
{ 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 *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 *INITITATE()
{ 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<1)&&(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=(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<j-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;
printf_s("请输入:");
head = hcreate();
print(head);
printf_s("\n");
INSERT(head, 1, 'm');
print(head);
printf_s("\n");
ch = GET(head, 1);
printf_s("%c", ch);
printf_s("\n");
p = LOCATE(head, 'm');
printf_s("%c", p->data);
printf_s("\n");
DELETE(head, 1);
print(head);
printf_s("\n");
printf_s("%d", LENGTH(head));
}