免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1176 | 回复: 5
打印 上一主题 下一主题

[C++] 大家帮帮忙吧,一道简单的C++题目,不知是什么问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-08 23:20 |只看该作者 |倒序浏览
#include<iostream.h>;
struct student
{
int ladder;
int number;
float time;
student *next;
};
student *head;

void insert(student *_point)
{

if(_point->;time<=head->;time)
{
_point->;next=head;
head=_point;
return;
}

student *q,*r;
q=head;

do
{
r=q;
q=q->;next;
if(q=NULL)
{
r->;next=_point;
_point->;next=NULL;
return;
}
}while(_point->;time<=q->;time) ;
r->;next=_point;
_point->;next=q;
return;
}
void main()
{
student *p=NULL;
student *q=NULL;
head=NULL;
for (int ii=0;ii<=8;ii++)
{
p=new student;
cin>;>;p->;ladder>;>;p->;number>;>;p->;time;
q=p;
if (head==NULL)
{
head=p;
}
p=p->;next;
}

student *_cout;
_cout=head;
do
{
cout<<_cout->;number;
_cout=_cout->;next;
}while(cout!=NULL);
student *point=NULL;
for (ii=0;ii<=8;ii++)
{
point=new student;
cin>;>;point->;ladder>;>;point->;number>;>;point->;time;
insert(point);
}

_cout=head;
do
{
cout<<_cout->;number;
_cout=_cout->;next;
}while(cout!=NULL);
}

13.某次国际田径邀请赛,100m赛跑项目有16位选手分两组进行。
第一组8位选手的成绩如下:

运动员号码 207 156 453 096 338 136 501 614
成绩:秒 10.28 11.02 10.54 10.98 10.63 11.04 11.23 11.08
请你先将第一组的成绩形成一个链表,成绩好的在前面,差的排在后面。每个结点有三个数据:①名次,②运动员号码,③成绩。
当第二组8位选手的成绩得到后请将其中的每一名选手依成绩的好坏插入到链表当中。第二组成绩如下:

运动员号码 209 181 461 059 121 525 606 320
成绩:秒 10.11 11.12 11.00 10.99 11.50 11.40 10.22 10.65
最后从头到尾输出链表中结点的数据。

输入:有16行,每行两个数字,一个整数,一个小数,分别表示运动员号码和成绩。
输出:两行,第一行是第一组选手按照成绩排序输出的运动员编号(8位选手);第二行是第二组插入链表后,按成绩排序输出的运动员编号(16位选手)。每两个运动员编号之间用空格隔开。

这是题目,不知怎么回事,执行后,添加几个人的数据就出错~~帮忙看看,各位大哥

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-01-08 23:43 |只看该作者

大家帮帮忙吧,一道简单的C++题目,不知是什么问题

if(q=NULL)

论坛徽章:
0
3 [报告]
发表于 2004-01-09 10:37 |只看该作者

大家帮帮忙吧,一道简单的C++题目,不知是什么问题

确实是个错误,高手

主要不是这个,这个错误是应该发生在后来查入链表的时候
但是,我第一次创建链表的时候创建到第5个就出问题了,中止了运行~~为什么阿

论坛徽章:
0
4 [报告]
发表于 2004-01-09 22:49 |只看该作者

大家帮帮忙吧,一道简单的C++题目,不知是什么问题

帮忙看看吧~

论坛徽章:
0
5 [报告]
发表于 2004-01-11 10:24 |只看该作者

大家帮帮忙吧,一道简单的C++题目,不知是什么问题

主要有一下几个问题,
a)
  do
{
r=q;
q=q->;next;
if(q=NULL)                                      //应该为NULL == q
~~~~~~~~~
{
r->;next=_point;
_point->;next=NULL;
return;
}
}while(_point->;time<=q->;time) ;  //这个判断条件好像有点不对

b)
do
{
cout<<_cout->;number;
_cout=_cout->;next;
}while(cout!=NULL) ;    //应该是_cout

c)这是错误的所以根源,实际上,这个for循环并没有建立
一个链表,9个数据都是独立的,没有串在一起
for (int ii=0;ii<=8;ii++)
{
p=new student;
cin>;>;p->;ladder>;>;p->;number>;>;p->;time;
q=p;
if (head==NULL)
{
head=p;
}
p=p->;next;
}

下面的是我写的代码
for (int ii=0;ii<=2;ii++)
{
        p=new student;
        p->;next = NULL;
        cin>;>;p->;ladder>;>;p->;number>;>;p->;time;
        if (NULL == q)
        {
                head=p;
                q = p;
        }
        else
        {
                q->;next = p;
                q = p;
        }

}

4)程序结束的时候,应该释放分配的资源,不然会造成内存泄漏

论坛徽章:
0
6 [报告]
发表于 2004-01-11 20:57 |只看该作者

大家帮帮忙吧,一道简单的C++题目,不知是什么问题

第9行有错吧!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP