标题:谭浩强版的C语言课本上的例题,运行显示 'NULL'的宣告是不相等的 这是怎么 ...
只看楼主
awei062
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-9-30
 问题点数:0 回复次数:3 
谭浩强版的C语言课本上的例题,运行显示 'NULL'的宣告是不相等的 这是怎么回事
#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct student)

struct student
{
 long num;
 float score;
 struct student *next;
};

int n;

struct student *creat(void)
{
 struct student *p1,*p2,*head;
 p1=p2=(struct student *)malloc(LEN);
 printf("please input a number and score:\n");
 scanf("%ld%f",&p1->num,&p1->score);
 head=NULL;n=0;
 while(p1->num!=0)
 {
  n=n+1;
  if(n==1)
  head=p1;
  else
  p2->next=p1;
  p2=p1;
  p1=(struct student *)malloc(LEN);
  printf("please input a number and score:\n");
  scanf("%ld%f",&p1->num,&p1->score);
 }
 p2->next=NULL;
 return head;
}

void print(struct student *head)
{
 struct student *p;
 p=head;
 if(head!=NULL)
 do
 {printf("%ld,%f\n",p->num,p->score);
 p=p->next;}
 while(p!=NULL);
}

struct student *del(struct student *head,long num)
{

 struct student *p1,*p2;
 if(head==NULL)
 printf("the list is NULL\n");
 else
 {
 p1=head;
 while(num!=p1->num&&p1->next!=NULL)
 {
  p2=p1;
  p1=p1->next;
 }
 if(num!=p1->num)
 printf("no found!\n");
 else
 {
  if(p1==head)
  head=head->next;
  else
  {p2->next=p1->next;
  free(p1);}

 }
 return head;
 }
}

struct student *insert(struct student *head,struct student *stu)
{
 struct student *p0,*p1,*p2;
 p0=stu;
 if(head==NULL)
 {head=p0;
 p0->next=NULL;}
 else
 {
  p1=head;
  while(p0->num>p1->num&&p1->next!=NULL)
  {p2=p1;p1=p1->next;}
  if(p0->num<=p1->num)
  {
   if(head==p1)
   {head=p0;p0->next=p1;}
   else
   {p2->next=p0;p0->next=p1; }

  }
  else
   {p1->next=p0;p0->next=NULL;}
 }
 return head;
}


main()
{
 struct student *head,*stu;
 long del_num;
 head=creat();
 print(head);
 printf("please input the del number:\n");
 scanf("%ld",&del_num);
 while(del_num!=0)
 { head=del(head,del_num);
 print(head);
 printf("please input the del number:\n");
 scanf("%ld",&del_num);

 }


 printf("please input the insert num and score:\n");
 stu=(struct student *)malloc(LEN);
 scanf("%ld%f",&stu->num,&stu->score);
  while(stu->num!=0)
 {
 head=insert(head,stu);
 print(head);
 stu=(struct student *)malloc(LEN);
 printf("please input the insert num and score:\n");
 scanf("%ld%f",&stu->num,&stu->score);
 }

 getch();

}
搜索更多相关主题的帖子: 谭浩强 C语言 例题 NULL 课本 
2008-11-02 11:16
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
除了重复定义了NULL 还有什么

倚天照海花无数,流水高山心自知。
2008-11-02 11:43
awei062
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-9-30
得分:0 
删除后编译成功 谢谢
2008-11-02 15:49
lizhiting
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-13
得分:0 
不会吧,书上的例子也会错,是自己输入的时候打错了吧?
2008-11-13 14:28



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




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

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