| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1160 人关注过本帖
标题:这个建立链表的程序有没有问题?
只看楼主 加入收藏
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
收藏
 问题点数:0 回复次数:13 
这个建立链表的程序有没有问题?
下面是一个建立链表的程序,老师写的,我觉得有点小问题,大家帮我看看。

# 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
高手帮我看看是不是这样,谢谢!

[[it] 本帖最后由 ronaldfree 于 2008-8-14 15:34 编辑 [/it]]
搜索更多相关主题的帖子: 链表 
2008-08-14 13:30
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
收藏
得分:0 
我看错了,老师是对的。我没看到p->next=NULL这句
2008-08-14 13:33
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
收藏
得分:0 
如果从效率上看,把p->next=NULL这句删了,然后在return head前面加上tail->next=NULL可能效率更高,请问高手是不是这样?
2008-08-14 13:38
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
我就觉得在main里还应该加上这个

void *p;
p=create;
h=p();
2008-08-14 13:46
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
struct student *()
2008-08-14 13:46
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
收藏
得分:0 
你们觉得这个链表的程序没有问题吗?

http://blog./csynyk
2008-08-14 14:21
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
收藏
得分:0 
如果这位老师写这段代码的目的是要学生找出错误并改正的话那还差不多,如果是作为正确的程序来讲解的话,这样的老师可以去另谋生路了,否则会误人子弟!

http://blog./csynyk
2008-08-14 14:24
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
收藏
得分:0 
有点问题:struct student *()这行应该是struct student *creat(),抄漏了creat。现在没有问题了,谁说有问题我跟谁急
2008-08-14 14:31
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
正确性没什么问题
效率另议。
2008-08-14 14:32
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
收藏
得分:0 
[bo][un]missiyou[/un] 在 2008-8-14 13:46 的发言:[/bo]

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

void *p;
p=create;
h=p();

???
看不懂!
2008-08-14 14:34
快速回复:这个建立链表的程序有没有问题?
数据加载中...
 
   



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

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