为什么插入不成功?(在VC2010中编译未通过 错误提示: 缺少“;”(在“类型”的前面))

#include<stdio.h>
#include<stdlib.h>
typedef int Elemtype;
typedef struct Node
{
    Elemtype data;
    struct Node *next;
}Node,*LinkList;
/*初始化单链表*/
void InitList(LinkList *h)
{
    *h=(LinkList)malloc(sizeof(Node));
    (*h)->next=NULL;
}
/*创建一个单链表*/
void creatList(LinkList h)
{
    LinkList p,q;
    q=h;
    p=(LinkList)malloc(sizeof(struct Node));
    scanf("%d",&p->data);
    while(p->data!=-1)
    {
        q->next=p;
        q=p;
        p=(LinkList)malloc(sizeof(struct Node));
        scanf("%d",&p->data);
        q->next=NULL;
    }
}
int printList(LinkList L)
{
    Node *p;
    p=L->next;
    while(p)
     {
        printf("%5d",p->data);
        p=p->next;
    }
    return 0;
}
/*输入x,y。在第1个结点值为x后插入y,若无结点x,则在表尾插入结点y;*/
int insertList(LinkList h,int x,int y) {     Node *p;     LinkList s;     p=h->next;     while(h->data==x)         s=(LinkList)malloc(sizeof(Node));  // 生成新结点     s->data=y;     s->next=p->next;      // 插入L中     p->next=s; }
int main()
{
    LinkList h;
    int x,y;
    InitList(&h);
    printf("请输入数据(以-1结束):\n");
    creatList(h);
    printf("单链表中的数据为:");
    printList(h);
    printf("请输入查找元素及插入元素:");
    scanf("%d%d",&x,&y);
    insertList(h,x,y);
    printList(h);
    printf("\n");
    return 0;
}

这一行修改一下:
// 插入L中 p->next=s; }
改为:
// 插入L中 p->next=s;
}