这个不是怎么用指针实现排序的问题。。。请看以下代码。。。
case 4:{ p1=head->next; //浏览数据
while(1)
{
printf("学号:%d 姓名:%s 计算机基础成绩:%2f 数据库理论成绩:%2f 计算机组成原理成绩:%2f
总分:%2f 平均分:%2f\n",p1->num,p1->name,p1->score1,p1->score2,p1->score3,sum=p1->score1+p1->score2+p1->score3,arve=
(p1->score1+p1->score2+p1->score3)/3);
p1=p1->next;
if(p1==NULL)break;
}
getchar();}
getchar();
break;
这是一个C环境下一个非常简易的学生成绩
管理系统,就是有简单的增删改查功能,然后这个是主界面下一个浏览全部数据的模块,现在问题是,这里用的是结构体加指针来输出所有人的所有成绩,现在想再加上一个判断,是否需要按总分排序,然后进行按照总分从大到小的排序,请问这里怎么用指针实现?还是说得重新写这个模块?谢谢
这个问题问得好。
原始的数据有你原来的存储方法,可是输出的时候要转换怎么办呢?把原来的数据破坏弯悉了觉得麻烦又不安全的,对不?
我们把软件分成两个层来处理这个问题,一个数据存储携闹孙层,一个表示层。数据存储层负责原始数据的存储,就是你现在的这个链表。数据表示辩链层是一个新的用来格式化输出原始数据的模块。
这里比较方便的办法是新建一个数据表示对象,也是一个链表。链表的数据部分是指针,指向原始数据的一个数据元素。要输出之前,只需要对表示层链表进行排序操作就可以了。
大体上软件分层的问题都是这样来的,仔细琢磨下这个问题哦。
你这个指针都能实现了,还需要重写滑尺么,你把那个sum放到你的结构体中,然后用指针进行排序,你辩州可以先获取链表的长度,也可以直接加信灶高,直到表尾。
#include<stdio.h>
#define N 5
void main()
{
float data[N];
int i,j,t;
printf("%d\n",N);
for(i=0;i<N;i++)
scanf("%d",&data[i]);
printf("\n");
for(i=0;i<N;i++)
for(j=0;j<N-1;j++)
if(data[j]>data[j+1])
{t=data[j];data[j]=data[j+1];data[j+1]=t;}
printf("\n"册升滑罩);
for(i=0;i<州让老N;i++)
printf("%d",data[i]);
}