标题:链表问题有点困惑~~~~~~~~
只看楼主
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
结帖率:100%
已结贴  问题点数:60 回复次数:4 
链表问题有点困惑~~~~~~~~
#include<stdio.h>
#include<stdlib.h>
#define NULL ((void *)0)
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
    int id;
    char name[20];
    float grade;
    struct stu *next;
};
TYPE *creat(int n)                /*创造n个结点的指针函数*/
{
   struct stu *head,*pf,*pb;
   int i;
   printf("Please input id,name,grade\n");
   for(i=0;i<n;i++)
   {   
      pb=(TYPE *) malloc(LEN);
      scanf("%d",&pb->id);
      gets(pb->name);
      scanf("%f",&pb->grade);
      if(i==0)
          pf=head=pb;
      else
          pf->next=pb;
      pb->next=NULL;为什么要把下一结点的地址赋空值?~~
      pf=pb;
   }
   return(head);
}
void print(TYPE *head)    /*输出函数*/
{
    printf("please input id,name,grade\n");
    while(head!=NULL)
    {
        printf("%4d%8s%8.1f\n",head->id,head->name,head->grade);
        head=head->next;
    }
}
void main()
{
    int n;
    TYPE *head;
    printf("Please input n\n");
    scanf("%d",&n);
    head=creat(n);
    print(head);
}
黑体部分为什么改成#define NULL 0我的系统是XP的,装的是VC6.0就报错了啊~~
搜索更多相关主题的帖子: 链表 困惑 
2010-10-24 11:36
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
得分:20 
pb->next=NULL;为什么要把下一结点的地址赋空值?~~
弄成空置,是为了进行循环处理的时候,判断终止条件。比如while(p) p=p->next;
当运行到最后一个节点的时候因为是空置,所以才能退出循环。
#define NULL 0将会把所有的NULL都定义为0,这是不对的。0是整形数据。
NULL在C语言的定义可不只是零,还代表空指针,即不指向任何数据。

编程的道路上何其孤独!
2010-10-27 16:41
筱晓绾
Rank: 10Rank: 10Rank: 10
来 自:湖南
等 级:贵宾
威 望:12
帖 子:512
专家分:1736
注 册:2010-9-1
得分:20 
学习中~~~
2010-10-27 16:49
cacker
该用户已被删除
得分:20 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-27 18:25
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
得分:0 
看来书上错误可不少啊~~~黑体部分是我在VC的include文件找出来的~~
#define NULL 0是书上的~~~
2010-10-28 11:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323815-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.190575 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved