链表问题?????
为输入学生的名字创建一个链表问题!!!
typedef struct node
{
char name[20];
struct node *link;
}stud;
stud * creat()
{
stud *p,*h,*s;
int i,n;
puts( "\nPlease input the number of linklist: ");
scanf( "%d ",&n);
if((h=(stud *)malloc(sizeof(stud)))==NULL)h=NULL代表没有赋值吗?????
{
printf( "cannot find space! ");
exit(0);
}
h-> name[0]= '\0 ';只是赋值给name[0]= '\0 '吗?那其他的呢?
h-> link=NULL;
p=h;// h头指针赋值给p,主要有什么作用呢???
for(i=0;i <n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf( "cannot find space! ");
exit(0);
}
p-> link=s;//s赋值给p-> link干什么用???????
printf( "please input %d student 's name: ",i+1);
scanf( "%s ",s-> name);
s-> link=NULL;
p=s;//s头指针赋值给p干什么用呢?
}
return(h);
}
[解决办法]
1。==NULL代表分配空间失败
2。 h-> name[0]= '\0 ';//h是头结点,这只是初始化
h-> link=NULL;
p=h;
3。p是一个指针增量,现在指向头结点。。。
4。 p-> link=s;//指针增量(现在是头结点)的下一个节点为s
5。 p=s;//指针增量指向了第一个节点。