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