| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 355 人关注过本帖
标题:这个建立链表的程序有没有问题?
收藏  订阅  推荐  打印 
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2
这个建立链表的程序有没有问题?

下面是一个建立链表的程序,老师写的,我觉得有点小问题,大家帮我看看。

# include "stdio.h"
struct student{
  int num;
  float score;
  struct student * next;
};
struct student *creat();
main()
{
  struct student *head;
  head=creat();
}

struct student *creat()
{
  struct student *head,*tail,*p;
  float score;
  int num,size=sizeof(struct student);
  head=tail=NULL;
  scanf("%d%f",&num,&score);
  while(num){
    p=(struct student *)malloc (size);
    p->num=num;p->score=score;
    p->next=NULL;
    if(head==NULL) head=p;
    else tail->next=p;
    tail=p;
    scanf("%d%f",&num,&score);
  }
  return head;
}

这段程序建立了单向链表,但好像链表的尾指针不是NULL,我觉得应该在return head的前面加上一句:tail->next=NULL
高手帮我看看是不是这样,谢谢!

[ 本帖最后由 ronaldfree 于 2008-8-14 15:34 编辑 ]
搜索更多相关主题的帖子: 链表  
2008-8-14 13:30
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2

我看错了,老师是对的。我没看到p->next=NULL这句
2008-8-14 13:33
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2

如果从效率上看,把p->next=NULL这句删了,然后在return head前面加上tail->next=NULL可能效率更高,请问高手是不是这样?
2008-8-14 13:38
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
威望:7
帖子:312
积分:2853
注册:2007-10-9

我就觉得在main里还应该加上这个

void *p;
p=create;
h=p();
2008-8-14 13:46
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
威望:7
帖子:312
积分:2853
注册:2007-10-9

struct student *()
2008-8-14 13:46
csynyk
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1460
注册:2008-8-9

你们觉得这个链表的程序没有问题吗?

http://blog.csdn.net/csynyk
2008-8-14 14:21
csynyk
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1460
注册:2008-8-9

如果这位老师写这段代码的目的是要学生找出错误并改正的话那还差不多,如果是作为正确的程序来讲解的话,这样的老师可以去另谋生路了,否则会误人子弟!

http://blog.csdn.net/csynyk
2008-8-14 14:24
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2

有点问题:struct student *()这行应该是struct student *creat(),抄漏了creat。现在没有问题了,谁说有问题我跟谁急
2008-8-14 14:31
woshiyun
Rank: 3Rank: 3
等级:中级会员
帖子:172
积分:2398
注册:2008-6-16

正确性没什么问题
效率另议。
2008-8-14 14:32
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2

missiyou 在 2008-8-14 13:46 的发言:

我就觉得在main里还应该加上这个

void *p;
p=create;
h=p();
???
看不懂!
2008-8-14 14:34
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.056000 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved