lxcsure - 2007-1-11 14:23:00
typedef struct student
{
char name[20];
char sno[20];
int result;
struct student* next;
};
void main(int argc, char* argv[])
{
student *head=NULL,*p=NULL,*q=NULL;
for(int i=0;i<10;i++)
{
if(p==NULL)
{
if((p=(student*)malloc(sizeof(student)))==NULL)
{
printf("内存申请错误");
return;
}
p->next=NULL;
printf("输入姓名:");
scanf("%s",p->name);
printf("输入成绩:");
char temp[20];
scanf("%s",temp);
p->result=atoi(temp);
if(p->result<0)
{
printf("程序结束\n");
return;
}
printf("输入学号:");
scanf("%s",p->sno);
if(head==NULL)
{
head=p;
}
q=head;
while(q!=NULL)
{
printf("姓名:%s,成绩:%d,学号:%s\n",q->name,q->result,q->sno);
q=q->next;
}
p=p->next;
}
}
printf("达到人数上限,程序结束");
}
如题,为什么在以下这一步遍历只能打印出头节点,其他非空的节点都遍历不到吗.
while(q!=NULL)
{
printf("姓名:%s,成绩:%d,学号:%s\n",q->name,q->result,q->sno);
q=q->next;
}
天下奇才 - 2007-1-13 16:45:00
有一个问题你注意了吗?结点的指针域并为赋值——也就是根本没指向下一个结点
© 2000 - 2026 Rising Corp. Ltd.