创建栈 不知道哪里不对

给看看出啥问题了
#include

typedef int ElemType;
typedef struct Linknode{
ElemType data;
struct Linknode *note;
}*LiStack;
void createf (LiStack *L,int a[],int n){
LiStack *s;//创建一个指针
L=(LiStack *)malloc(sizeof(LiStack));//分配头节点L
L->next=NULL;
for(int i=0;i
s=(LiStack *)malloc(sizeof(LiStack));
s->data[i]=a[i];
s->next=L->next;
L->next=s;

}

}
void A(LiStack *L){
LiStack *p;
P=L->next;
while(p!=NULL){
printf(LiStack *, p->data;)
p=p->next;
}

}
int main(){
LiStack *L;
int t[]={3,5,2,1,7};
createf(L,t,5);
}

你这不是C# 吧
L=(LiStack * )malloc(sizeof(LiStack));//分配头节点L
写错了啊,LiStack 本身就是指针类型啊,改为
*L = (LiStack)malloc(sizeof(Linknode));
另外s也是不对的,改为LiStack s;
s = (LiStack)malloc(sizeof(Linknode));