c++学生信息管理系统怎么根据学号排序萌新跪求
本帖最后由 小路k 于 2018-6-24 14:52 编辑一个学生信息管理系统的排序功能
定义一个student 的类
student中包括学号,姓名,年龄
这个类中定义一个排序的功能
要求能根据学号进行排序
学号为string类型
初学者求助,跪求大佬帮助......
嘤嘤嘤?! 我觉得这个在数据库层面就能实现,select * from studentinfo order by 学号 #include "stdio.h"
#include "malloc.h"
#include "string.h"
//一个学生信息管理系统的排序功能
//学生信息包括学号,姓名,年龄
//要求能根据学号进行排序
//学号为string类型
//初学者求助,跪求大佬帮助......
typedef struct sData{
char * xh;
char * name;
int age;
}sData;
typedef struct sTest{
sData * Data;
struct sTest *next;
}sTest;
typedef struct sHead{
sTest * p_head;
}sHead;
void random_data(sHead * p,int n){
sTest * t;
char str;
int i ;
p->p_head=NULL; //初始化
for(i=0;i<n;i++){
t=(sTest *)malloc(sizeof(sTest));
t->Data=(sData *)malloc(sizeof(sData));
str='a'+i;
str='b'+i;
str='c'+i;
str='\0';
t->Data->xh=(char *)malloc(strlen(str)+1);
t->Data->name=(char *)malloc(strlen(str)+1);
t->Data->age=i;
strcpy(t->Data->xh,str);
strcpy(t->Data->name,str);
t->next=p->p_head;
p->p_head=t;
}
}
void print(sHead * p){
sTest *t=p->p_head;
while(t){
printf("number:%s name:%s age:%d\n",t->Data->xh,t->Data->name,t->Data->age);
t=t->next;
}
}
void sort(sHead * p){
sTest *t=p->p_head;
sTest *t1;
sTest * swap;
while(t&& t->next){
swap = t;
t1=t->next;
while(t1){
if(strcmp(swap->Data->xh,t1->Data->xh)>0){
swap=t1;
}
t1=t1->next;
}
if(t-swap){ //地址发生偏移
sData * s = t->Data;
t->Data = swap->Data;
swap->Data = s;
}
t=t->next;
}
}
int main(){
sHead head;
random_data(&head,10);
print(&head);
sort(&head);
puts("\n\n");
print(&head);
return 0;
}
sort比较low,好的方法。可以带入函数指针,函数指针返回 0 或者大于0 或者小于0,sort根据函数指针返回到值,进行操作。
这样到好处是,可以sort各种排序 根据学会排序呗 关键是感觉 发表于 2018-6-24 00:58
sort比较low,好的方法。可以带入函数指针,函数指针返回 0 或者大于0 或者小于0,sort根据函数指针返 ...
蟹蟹{:10_297:} 强制转化为int型排序
页:
[1]