在vc++6.0中出现了这个异常error C2061: syntax error : identifier 'head'

在vc++6.0中出现了这个错误error C2061: syntax error : identifier 'head'?
#include<stdio.h>
#include<windows.h>
#include<math.h>
#include<stdlib.h>
typedef struct node
{int num;
struct node *next;
}linklist;
linklist *creat(head,n)/*使n个人围成一圈,并给每个人标识好书*/
linklist *head;
int n;
{linklist *s,*p;
int i;
s=malloc(sizeof(linklist));
head=s;
s->num=1;
p=s;
for(i=2;i<=n;i++)
{s=malloc(sizeof(linklist));
s->num=i;
p->nest=s;
p=s;
}
p->next=head;
return head;
}/*creat*/
linklist *select(head,m)
linklist *head;
int m;
{linklist *p,*q;
int i,t;
p=head;t=1;
q=p;/*q为p的前驱指针*/
do
{p=q->next;/*p指向当前报数的人*/
t=t+1;/*报一次数*/
if(t%n==0)
{printf("%4d',p->num);
  q->next=p-next;
free(p);

}
else
q=p;
}while(q==p)
head=p;
return(head);
}/*select*/
main()
{int n,m;
linklist *head;
printf("input the totle number\n");
scanf("%d",&n);
printf("input the number to call:\n");
scanf("%d",&m);
creat(head,n);
select(head,m);
printf("the last ont:is\n",head->num);
}/*main*/ 


------解决方案--------------------
linklist *creat(head,n)/*使n个人围成一圈,并给每个人标识好书*/

head是什么?这个是函数声明,head又不是数据类型,n又是啥?函数尾还少了;号。
楼主,麻烦写代码前先学语法。