求教线性表的基本操作
											
程序代码:#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next; 
}node,*Linklist;
void InitList(Linklist *head)
{
Linklist *t = NULL;
t=(Linklist*)malloc(sizeof(node));
head=t;
t->next=NULL;
}
void CreateList(Linklist *head)
{
Linklist last = NULL,t = NULL;
char ch;
t=(Linklist*)malloc(sizeof(node));
head=t;
last=t;
t->next=NULL;
while((ch=getchar())!='$')
{
t=(Linklist*)malloc(sizeof(node));
t->data=ch;
last->next=t;
last = t;
t->next=NULL;
}
}
Linklist*locate(datatype x,Linklist*head)
{
    Linklist *p;
    p=head->next;
    while(p!=NULL)
    if(p->data==x)
    {return p;
    }
    else p=p->next;
    return NULL;
}
void insertafter(Linklist*head,datatype x,Linklist*p)
{
    Linklist *s;
    s=malloc(sizeof(Linklist));//这边malloc前面为什么没有(Linklist*)
    s->data=x;
    s->next=p->next;
    p->next=s;
}
int deleteafter(Linklist *head, Linklist*p)
{
    Linklist *t;
    int r=1;
    if(p->next!=NULL)
    {
        t=p->next;
        p->next=t->next;
        free(t);
    }
    else
        r=0;
    return r;
}
void main()
{
    Linklist*head;
    InitList(head);
    CreatList(head);
    display(head);
    Linklist*locate(x,head);//查找指定值的结点并返回改结点的指针
    deleteafter(head,p);//删除指定值的结点
    display(head);//显示删除后链表的内容
    insertafter(head,x);//在制定节点后插入指定值结点
    ddsplay(head);//显示插入后链表的内容
}
这个主函数有错误吗?还有,这里哪些是二级指针?怎么区分?除了出函数其它各部分分别运行也好多错误啊,错在哪?



											
	    

	