线性表基本问题!!!
各位大哥,我在学数据结构,编了一个链式存储结构线性表,在VC6.0环境下运行时,当输入(建表)超过5个数据时(设计时只让他输入5个数据),就进入死循环后面求表长再也不运行,请问是怎么回事?不胜感激!!!
#define NULL 0
typedef struct node *pointer;/*定义变量*/
struct node
{
int data;
pointer next;
};
typedef pointer lklist;
lklist create_lklist()/*建表 只输入5个整型数据*/
{
lklist head,p,q;
int x,j;
head=malloc(sizeof(struct node));
p=head;
printf("\n请输入数据:\n");
scanf("%d",&x);
for(j=0;j<5;j++)
{
q=malloc(sizeof(struct node));
q->data=x;
p->next=q;
p=q;
printf("\n请输入数据:\n");
scanf("%d",&x);
}
p->next=NULL;
return(head);
}
int length_lklist(lklist head)/*求表长*/
{
lklist p=head;
int j=0;
while(p->next!=NULL)
{
p=p->next;
j++;
}
return(j);
}
void out_lklist(lklist head)
{
int i=0;
lklist p=head;
while(p->next!=NULL)
{
i++;
printf("\n结点%d数据为:%d",i,p->data);
}
return;
}
main()
{
lklist head1,p;
int length;
head1=create_lklist();
out_lklist(head1);
length=length_lklist(head1);
printf("\n表长为:%d",length);
}