| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:大家来看看这个程序 最好给我讲解一下,错在哪边?谢谢大侠指点;主要是讲解 ...
只看楼主 加入收藏
wa5000
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
大家来看看这个程序 最好给我讲解一下,错在哪边?谢谢大侠指点;主要是讲解?
#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;
}

[[it] 本帖最后由 wa5000 于 2009-8-3 03:05 编辑 [/it]]
搜索更多相关主题的帖子: 讲解 
2009-07-31 05:54
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
写的时候注意注释一下啊,这样很多人都没耐心看了。
2009-07-31 14:12
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
如果只是编译通不过,第15行
int num;size=sizeof(struct student);

num后应该是逗号。(编译器应该会提示size未定义吧?)
2009-08-01 17:55
wa5000
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-23
收藏
得分:0 
回复 3楼 CrystalFan
我看到 了 是那个错了 不过我想了解一下 这个程序的意思啊 。您能为我解释一下么
2009-08-02 02:36
紫ing~
Rank: 4
来 自:中科大
等 级:业余侠客
帖 子:103
专家分:273
注 册:2008-11-25
收藏
得分:0 
这就是创建链表啊,p是开辟新节点的,head是头结点标志,用于返回的,tail是用来连接链表节点的,指向当前节点。

唯有天道恒在,往复循环,不曾更改。。。
2009-08-02 15:16
wa5000
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-23
收藏
得分:0 
我也刚学 我向问一下 这个程序有什么用 ,主要我输入什么 能得到什么。我在turbo c 中运行,不是死机 就是不能动啊 。对于要不就一直出现一些数字,还自动出
2009-08-03 03:07
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:5 
函数功能说明
输入一组信息,每一项为一个整数加一个实数,表述学生的学号和成绩,可以输任意多组,学号为0表示结束,如:
1 95.5
2 78.2
3 56.2
4 90
5 96
6 72.0
0 0

本段代码功能是创建一个链表,存储输入的学生信息,只是把它们存在了内存中,没有输出。

要看结果必须加一个链表显式函数:
程序代码:
int output( struct student *head)
{
    struct student *p=head;
    printf("Student Number\tScore\n");
    while(p!=NULL)
    {
        printf("%d\t\t%3.1f\n",p->num,p->score);
        p=p->next;
    }
}

再在main()函数前面加上:
int output(struct student *);

在main()函数里面最后加上:
output(head);
getch();

就可以看到你输入的数据了。

链表的其它操作与功能,可以去看一下“数据结构”相关书籍。

[[it] 本帖最后由 CrystalFan 于 2009-8-3 14:18 编辑 [/it]]

1.JPG (20.24 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


2.JPG (9.72 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2009-08-03 13:46
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:5 
程序代码注释
struct student                              /*结构体类型说明,表示一个节点*/
{
  int num;
  float score;                              /*学生的学号和成绩*/
  struct student *next;                     /*指向下一个节点的指针*/
};

struct student *creat()
{
    struct student *head,*tail,*p;        
    float score;
    int num,size=sizeof(struct student);    /*size表示结构体student所占内存空间的大小*/
    head=tail=NULL;                         /*定义链表为空*/
    scanf("%d%f",&num,&score);              /*读入第一组数据*/
    while(num)                              /*如果学号不为0,继续处理输入*/
       {
       p=(struct student *)malloc(size);    /*申请一个节点,p指向该节点*/
       p->num=num;
       p->score=score;                      /*用输入的值给该节点赋值*/
       p->next=NULL;                        /*由于下一步要将p指向的节点插在链表的末尾*/
                                            /*所以p指向的节点的下一个节点不存在,指针为NULL*/
        if(head==NULL)   head=p;            /*如果链表为空(一个节点也没有),即head不存在*/
                                            /*则p指向的节点是第一个节点(头节点)*/
        else    tail->next=p;               /*否则,让p成为原来尾节点的下一个节点/
        tail=p;                             /*让p指向的节点成为新的尾节点*/
         scanf("%d%f",&num,&score);         /*输入新的数据*/
      }
      return head;                          /*函数返回值为链表的头结点指针*/
}

[[it] 本帖最后由 CrystalFan 于 2009-8-3 14:09 编辑 [/it]]
2009-08-03 13:48
AND_Y
Rank: 2
等 级:论坛游民
帖 子:18
专家分:45
注 册:2009-7-31
收藏
得分:0 
上楼真是个有耐心的人啊,呵呵,都这么详细了,楼主要结贴了吧,呵呵
2009-08-03 15:42
advancer
Rank: 1
等 级:新手上路
帖 子:22
专家分:2
注 册:2009-5-4
收藏
得分:0 
帮顶了
2009-08-03 18:13
快速回复:大家来看看这个程序 最好给我讲解一下,错在哪边?谢谢大侠指点;主要是 ...
数据加载中...
 
   



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

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