单链表的创建与插入.删除

typedef struct node
{
int data;
struct node *next;
}NODE;
typedef NODE Head;
typedef NODE *Pointer;
void CreateList(Head *head,int n){
Pointer q;
int i;
head->data=0;
head->next=NULL;
head=(Pointer)malloc(sizeof(NODE));
q=head;
printf("输入%d个元素:\n",n);
for(i=n;i>0;n--){
q=(Pointer)malloc(sizeof(NODE));
scanf("%d",&q->data);
q->next=head->next;
head->next=q;
}
}
int InsertList(NODE*head,int idx,int e)
{
Pointer s,p;
int j=0;
p=head;
while(p&&j p=p->next;j++;
if(!p||j>idx-1)
return 0;
s=(Pointer)malloc(sizeof(NODE));
s->data=e;s->next=p->next;
p->next=s;
return 1;
}
int DeleteList(NODE *head,int idx,int *e){
NODE *p,*q;int j=0;q=head;
while(p->next&&j p=p->next;j++;
}
if(!(p->next)||j>idx-1) return 0;
q=p->next;p->next=q->next;
e=q->data;free(q);
return 1;
}
void DispList(Head*head){
Pointer p;
p=head->next;
while(p!=NULL){
printf("%d",p->data);
p=p->data;
}
printf("\n");
}
int main()
{
Head L,La;
int n,e,a,b;
printf("输入元素个数:\n");
scanf("%d",&n);
CreateList(&L,n);
printf("输入要插入的元素及位置:\n");
scanf("%d%d",&a,&b);
InsertList(&L,a,b);
DispList(&La)
printf("输入要删除的元素及位置:\n");
DeleteList(&L,1,&e);
return 0;
}

 少头文件
#include <stdio.h>
#include <stdlib.h>

DispList(&La)
这里少分号

for(i=n;i>0;n--){
这里是i--

e=q->data;
->
*e=q->data;

p=p->data;
->
p=p->next;

错误太多了,不一一看了,
参考
http://blog.csdn.net/xubin341719/article/details/7091979
http://www.oschina.net/code/snippet_268712_9940