有头结点单链表查找关键字在链表中首次出现的位序

【输入形式】
第一行输入一个整数N;
第二行输入N个整数,创建有头结点单链表;
后面进行若干次查找,每输入一个关键字值,输出查找结果。(利用scanf()的返回值判断是否仍有数据输入)
【输出形式】
若找到关键字值,输出其在链表中首次出现的位序;
若未找到,输出-1。
【样例输入】
5
12 34 96 -67 100
12
100
96
28
【样例输出】
1
5
3
-1

/*建立带头结点的单链表并实现查找*/

#include <stdio.h>
#include <stdlib.h>
#define  ERROR  0
#define  OK  1

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

void CreateList(LinkList *L,int n)
{
    LNode *p,*q;
    int i;
    *L=(LinkList)malloc(sizeof(LNode));
    if(!*L)
        return ERROR;
    (*L)->next=NULL;
    p=*L;
    for(i=0;i<n;i++)
    {
        q=(LNode *)malloc(sizeof(LNode));
        if(!q)
            return ERROR;
        scanf("%d",&q->data);
        q->next=NULL;
        p->next=q;
        p=q;
    }
    return OK;
}

int GstList(LinkList L,int n,ElemType *e)
{
    LNode *p;
    int j=1;
    p=L->next;
    while(p&&j<n)
    {
        p=p->next;
        j++;
    }
    if(!p||j>n)
    {
        return ERROR;
    }
    *e=p->data;
    return OK;
}

int main()
{
    LinkList L=NULL;
    int n,x,i,j;
    scanf("%d",&n);
    CreateList(&L,n);
    while(scanf("%d",&x)!=EOF)
    {
        for(i=0;i<n;i++)
        {

        }
    }
    return 0;
}

查找那块应该是这么写的,但是主函数就不会写了

修改如下,供参考:

/*建立带头结点的单链表并实现查找*/
#include <stdio.h>
#include <stdlib.h>
#define  ERROR  0
#define  OK  1
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList *L,int n)
{
    LNode *p,*q;
    int i;
    *L=(LinkList)malloc(sizeof(LNode));
    if(!*L)
        return;  //return ERROR;
    (*L)->next=NULL;
    p=*L;
    for(i=0;i<n;i++)
    {
        q=(LNode *)malloc(sizeof(LNode));
        if(!q)
            return;  //return ERROR;
        scanf("%d",&q->data);
        q->next=NULL;
        p->next=q;
        p=q;
    }
    return;  //return OK;
}
int GstList(LinkList L,int n,ElemType *e)
{
    LNode *p;
    int j=1;
    p=L->next;
    while(p && p->data != n)//while(p&&j<n)
    {
        p=p->next;
        j++;
    }
    if(!p)
    {
        return ERROR;
    }
    *e = j;//*e=p->data;
    return OK;
}
int main()
{
    LinkList L=NULL;
    ElemType e;
    int n,x,i,j;
    scanf("%d",&n);
    CreateList(&L,n);
    while(scanf("%d",&x)!=EOF)
    {
        if(GstList(L,x,&e))
             printf("%d\n",e);
        else
             printf("-1\n");
    }
    return 0;
}