设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1935|回复: 5
打印 上一主题 下一主题

[求助]关与结构的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 03:18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序的目的是将学生的学号进行由小到大的排序。
小弟用边输入边排序的方法,但不知为何不能正确执行,虽然能通过编译,想很很久也想不到问题出在哪?望各位大大帮帮忙,正在学习C++

程序如何:
#include<iostream.h>

class Student
{
public:
Student()
{
setdate();
}

void setdate()
{
int a;
cout<<"输入所要建立的学生学号:";
cin>>a;
ID=a;

cout<<"输入学生的姓名:"<<flush;
cin>>name;

float b;
cout<<"输入A课程的成绩:";
cin>>b;
chinese=b;

float c;
cout<<"输入B课程的成绩:";
cin>>c;
math=c;

float d;
cout<<"输入C课程的成绩:";
cin>>d;
english=d;

total=english+chinese+math;

average=total/3;

}

int getID()
{
return ID;
}

char* getname()
{
return name;
}

float getchin()
{
return chinese;
}

float getmath()
{
return math;
}

float geteng()
{
return english;
}

float gettotal()
{
return total;
}

float getaverage()
{

return average;
}


protected:
int ID;
char name[20];
float chinese;
float math;
float english;
float total;
float average;
}; //类定义

struct Date
{
Student student;
Date *next;
}; //结构定义

Date *List()
{
int n=5;
Date *head; // 链首定义
head=NULL;
Date *temp;
Date *privoit; //临时变量
Date *head1;
Date *ps; //结点
ps=new Date;
if(head==NULL)
{
head=ps;
}
cout<<endl;
ps=new Date;

if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}
head->next=ps;
ps->next=NULL;//初始链

for(int i=0;i<n-2;i++)
{
cout<<endl;
ps=new Date;

if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}

privoit=head->next;
head->next=ps;
ps->next=privoit;
head1=head->next; //插入到head后面,再跟后面的元素比较大小

for(int j=0;j<=i;j++)
{
head1=head1->next;

if(ps->student.getID()>head1->student.getID())
{
temp=head1;
head1=ps;
ps=temp;
head1=ps;
}
else
break;
}
}
return (head);
}

void Print(Date *k)
{
cout<<"学号 姓名 A科成绩 B科成绩 C科成绩 总分成绩 平均成绩 "<<endl;
while(k!=NULL)
{
cout<<k->student.getID()<<" "<<k->student.getname()<<" "<<k->student.getchin()<<" "<<k->student.getmath()
<<" "<<k->student.geteng()<<" "<<k->student.gettotal()<<" "<<k->student.getaverage()<<endl;
k=k->next;
}
}


void main()
{

Print(List());
}
2#
发表于 2009-11-3 03:18:43 | 只看该作者
temp=head;
head=ps;
ps=temp; ???

楼主的链表的结构看着头晕
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 03:18:44 | 只看该作者
哦,这个是交换链首的代码啊!temp作为交换两个指针的临时变量啊!
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 03:18:45 | 只看该作者
LZ,错的我没话说.
我终于明白有时候改代码比写代码还难
if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}

privoit=head->next;
head->next=ps;
ps->next=privoit;
head1=head->next; //插入到head后面,再跟后面的元素比较大小

if(ps->student.getID()>head1->student.getID())
{
temp=head1;
head1=ps;
ps=temp;
head1=ps;
}
else
break;
这俩地方错了,自己看看吧.有看不懂的语句.我试图改了,但他一环套一环.非常不规范
希望楼主抓抓代码规范
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 03:18:46 | 只看该作者
汗...不好意思song4大哥,麻烦到你了!顺便问一下,该如何代码规范啊?
你可以加我吗?QQ:199462359,跟你学学东西...嘻....
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 03:18:47 | 只看该作者
112021999
msn song4@163.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 11:30 , Processed in 0.222162 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表