求教线性表的基本操作
程序代码:#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);//显示插入后链表的内容
}
这个主函数有错误吗?还有,这里哪些是二级指针?怎么区分?除了出函数其它各部分分别运行也好多错误啊,错在哪?








