C语言基本问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:18:43
以-1作为结束标志,编写一个创建链表的函数。请看下面问题
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
float score;
char a;
char b;
struct student *link;
};
struct student *creat()
{

struct student *head,*p,*q;
int number;
head=0;
printf("%d",sizeof(struct student));

scanf("%d",&number);
while(number!=-1)
{
q=(struct student *)malloc(sizeof(struct student));
q->num=number;
scanf("%f",&q->score);
if(head==0)
head =q;
else
p->link=q;
p=q;//这里可以不可以改成head=q?
scanf("%d",&number);
}
if(head!=0)
p->link=0;
return(head);
}

head是指针,不能和0比,也不能用0赋值;
而且那个地方也不能改为:head=q;
你的程序有点错,我改了一下(应该注意缩进):
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
float score;
char a;
char b;
struct student *link;
};
struct student *creat()
{
struct student *head,*p,*q;
int number;
head=NULL;
printf("%d",sizeof(struct student));
scanf("%d",&number);
while(number!=-1)
{
q=(struct student *)malloc(sizeof(struct student));
q->num=number;
scanf("%f",&(*q).score);
if(head==0)
head =q;
else
p->link=q;
p=q;//这里不可以改成head=q
scanf("%d",&number);
}
if(head!=0)
p->link=0;
return(head);
}

不能

head 是链表头指针,如果再指向q.几次循