C语言链表undefined reference to 问题

#include
#include
//定义类型
typedef int datatype;
typedef struct node
{
datatype data;
struct node*next;
} linklist;

//函数声明
int most(int*p); //找众数
linklist*create_list(); //生成链表
void put_list(linklist
); //输出链表

int main()
{
linklist*head;
head=create_list();
put_list(head);
}

linklist*create_list(int n) //带头结点的头插法,返回头指针
{
char ch;
printf("输入一组整数,中间用空格隔开,回车结束输入\n");
linklist*head,*p; int number;
head=(linklist*)malloc(sizeof(linklist));
head->next=NULL;
while(scanf("%d",&number))
{
p=(linklist*)malloc(sizeof(linklist));
p->data=number;
p->next=head->next;
head->next=p;
if(getchar()=='\n') break;
}
return head;
}

主函数的第二行 head=create_list();出现错误: undefined reference to `create_list()'
这是为什么呀??

1、函数声明与函数不匹配,你声明的函数create_list是无参数列表的,为啥下面函数实现有参数列表?这两个不是一个函数啊
2、主函数里put_list函数传参是个linklist指针,这个和你put_list的声明也不一样