单链表如何根据序号查找结点啊(帮忙看一下源程序)
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;
linklist *head,*p;
#define NULL 0
/*引入头结点的尾插法建表*/
linklist *CREATELISTR1()
{
linklist *head,*r,*s;
head=(linklist *)malloc(sizeof(linklist));
r=(linklist *)malloc(sizeof(linklist));
head=r;
char ch;
ch=getchar();
while(ch!='$')
{
s=(linklist *)malloc(sizeof(linklist));
s->data=ch;
r->next=s;
r=s;
ch=getchar();
}
r->next=NULL;
return head;
}
/*按序号查找*/
linklist *GET(linklist *head,int i)
{
int j;
linklist *p;
j=0;p=head;
while((j<i)&&(p->next!=NULL))
{p=p->next;j++;}
if(i==j)return p;
else return NULL;
}
/*输出单链表(不含头结点)*/
void PRINTLIST(linklist *L)
{
linklist *p;
p=L;
while(p){printf("%c",p->data);p=p->next;}
printf("\n");
}
/*输出线性表L中当前指针所指结点的内容*/
void PRINTNODE(linklist *q)
{
linklist *p;
p=q;
if(p)printf("当前结点内容为:%c\n",p->data);
else printf("当前结点内容为空\n");
}
void main()
{
linklist *L,*p;
char cmd;
datatype x;
int i;
L=CREATELISTR1();
PRINTLIST(L->next);
printf("请输入查找位置:\n");
scanf("%d",&i);
p=GET(L,i);
PRINTNODE(p);
}
我输入了查找的序号,但就是无法查找成功,怎么回事啊