初学者创建单链表

菜鸟创建单链表
#include <stdio.h>
#include <stdlib.h>
struct node {

int data;
struct node *next;
};
int main(){

struct node *head;
    head=NULL;
head=creat(head);
Output(head);
return 0;
}
struct node*creat(struct node*head){

int i,LEN;
struct node *p,*s;

printf("请输入链表长度LEN:");
scanf("%d",LEN);

if(LEN>=1){

for(i=0;i<LEN;i++){
p=(struct node *)malloc(LEN*sizeof(struct node));
printf("请输入第%d个结点中的数据:",i+1);
scanf("%d",&p->data);
p->next=NULL;
head=p;
s=p;

}
}else return NULL;
return (head);
}
void Output(struct node*head){

struct node *temp;
temp=head;
while(1){

if(temp!=NULL){
printf("%d->",temp->data);
temp=temp->next;
}else break;
}printf("\n");
}
:\documents and settings\administrator\桌面\程序运行\电子地图\hft\hft\fghrfth.c(16) : error C2040: “creat”: “node *(node *)”与“int ()”的间接寻址级别不同
1>c:\documents and settings\administrator\桌面\程序运行\电子地图\hft\hft\fghrfth.c(38) : error C2371: “Output”: 重定义;不同的基类型
这两个error  真心不知道怎么改!在线求前辈帮忙!急!
------解决思路----------------------
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};

struct node* creat(struct node*head){
int i, LEN;
struct node *p, *s;

printf("请输入链表长度LEN:");
scanf("%d", &LEN);

if (LEN >= 1){
for (i = 0; i < LEN; i++){
p = (struct node *)malloc(sizeof(struct node));
printf("请输入第%d个结点中的数据:", i + 1);
scanf("%d", &p->data);
p->next = NULL;
if (i == 0){
head = p;
s = p;
continue;
}
else
s->next = p;
}
}
else return NULL;
return (head);
}

void Output(struct node* head){
struct node *temp;
temp = head;
while (1){
if (temp != NULL){
printf("%d->", temp->data);
temp = temp->next;
}
else break;
}printf("\n");
}

void Destroy(struct node* head){
struct node* p = head, *q;
if (head == NULL)
return;
p = head;
while (p != NULL){
q = p->next;
free(p);
p = q;
}
}

int main(){
struct node *head;
head = NULL;
head = creat(head);
Output(head);
Destroy(head);
return 0;
}