图书馆座位管理系统vf:c程序问题?

来源:百度文库 编辑:高考问答 时间:2024/04/29 00:58:31
有如下程序:
#define NULL 0
struct student
{
long num;
float score;
struct student * next;
};
main()
{
struct student a,b,c,*head,*p;
a.num=9527;a.score=98.0;
b.num=9901;b.score=89.5;
c.num=9953;c.score=90.3;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
请问这里p起什么作用,不用p而直接用head代替p的位置行吗?

在此程序中可以,但一般来说,head头指针是不能改的,不然链的“头”就找不到了。
如果在此程序中用head代替P的话,如果再让你输出abc,该如何找到a?

在此程序中可以,但一般来说,head头指针是不能改的,不然链的“头”就找不到了。
如果在此程序中用head代替P的话,如果再让你输出abc,该如何找到a?
在此程序中可以,但一般来说,head头指针是不能改的,不然链的“头”就找不到了。
如果在此程序中用head代替P的话,如果再让你输出abc,该如何找到a?
在此程序中可以,但一般来说,head头指针是不能改的,不然链的“头”就找不到了。
如果在此程序中用head代替P的话,如果再让你输出abc,该如何找到a?
在此程序中可以,但一般来说,head头指针是不能改的,不然链的“头”就找不到了。
如果在此程序中用head代替P的话,如果再让你输出abc,该如何找到a?

编程最好把数据和操作相分离:
数据:
head是链表的一部分,用来保存头部,以做不时之需,不能更改。
操作:
p是你实现输出操作所使用的一个指针,不要把它和head混用,这样才能算是一个结构良好的程序。

针对本题来说,正如第一位回答者所说。。虽然改了后程序也能运行并实现功能,但是那是不是一种良好的习惯,从最初就开始培养良好的习惯会让你受益一生。