91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

利用多關鍵字排序進行高考分數處理,除了需對總分進行排序外,不同的專業對單科分數的要求不同,因此在總分相同的情況下,按用戶提出的單科分數的次序要求排出考生錄取的次序。 假設待排序的記錄數不超過1000,表中記錄的關鍵字數不超過5,各個關鍵字的范圍均為0至100。按用戶給定的進行排序的關鍵字的優先關系,輸出排序結果。

資源截圖

代碼片段和文件信息

#include
#include
#include? //時間函數頭文件

#define?MAX_NUM_OF_KEY?5 //關鍵字項數的最大值
#define?RADIX?101 //關鍵字基數
#define?MAX_SPACE?1000
#define?HEADER1?“?????**************學生成績表******************\n“
#define?HEADER2?“?????|?名次?|?總分?|?數學?|?英語?|?語文?|?理綜?|\n“
#define?HEADER3?“?????|------|------|------|------|------|------|\n“
int?j[4]={4444};

typedef?struct{
int?keys[MAX_NUM_OF_KEY]; //關鍵字
int?next; //下一個的數組下標
}SLCell;
typedef?struct{
SLCell?r[MAX_SPACE]; //靜態鏈表的可利用空間,r[0]為頭結點
int?keynum; //記錄的當前關鍵字個數
int?recnum; //記錄的個數
}SLList;

SLList?Creat() //接收考生的各科成績
{
SLList?*l;
int?i=1k=1;
l=(SLList*)malloc(sizeof(SLList));
l->keynum=5;
l->recnum=0;
while(k==1) //判斷是否繼續輸入
{
printf(“請輸入學生數學、英語、語文、理綜分數\n“);
scanf(“%d?%d?%d?%d“&(l->r[i].keys[1])&(l->r[i].keys[2])&(l->r[i].keys[3])&(l->r[i].keys[4]));
l->r[i].keys[0]=(l->r[i].keys[1]+l->r[i].keys[2]+l->r[i].keys[3]+l->r[i].keys[4]); //總分?
(l->recnum)++;
printf(“繼續輸入考生成績則輸入1,否則輸入0\n“);
scanf(“%d“&k);
i++;
}
return?*l;
}

void?BubbleSort(SLList?&lint?key[]) //LSD冒泡法排序
{
int?yijk;
????SLCell?R;
for(k=3;k>=0;k--) //根據給出的關鍵字順序按LSD法對各科成績進行排序??????????????????
{
i=key[k];
for(y=0;y for(j=1;j {
if(l.r[j].keys[i] {
R=l.r[j];
l.r[j]=l.r[j+1];
l.r[j+1]=R;
}
}
}
for(y=0;y for(j=1;j {
if(l.r[j].keys[0] {
R=l.r[j];
l.r[j]=l.r[j+1];
l.r[j+1]=R;
}
}
for(i=0;i<=l.recnum;i++)?
l.r[i].next=i+1;
l.r[l.recnum+1].next=0; //將l改造為靜態鏈表
}


void?Distribute(SLCell?*rint?iint?*fint?*e)
//以下標為i的關鍵字為準做一趟分配:按第i個關鍵字keys[i]建立RADIX個子表,使同一子表中記錄的keys[i]相同
{
int?jp;
for(j=RADIX-1;j>=0;--j)?f[j]=0; //各字表初始化為空表
for(p=r[0].next;p;p=r[p].next)
{
j=r[p].keys[i];
if(!f[j])?f[j]=p;
else?r[e[j]].next=p;
e[j]=p; //將下標p所指的節點插入第j個子表中
}
}

void?Collect(SLCell?*rint?iint?*fint?*e)
//做一趟收集:按keys[i]自小到大地將各子表依次鏈接成一個鏈表
{
int?jt;
for(j=RADIX-1;!f[j];j--); //找第一個非空子表
r[0].next=f[j]; //r[0].next指向第一個非空子表中的第一個結點
t=e[j];
while(j>=0){
for(j--;j>0&&!f[j];j--); //找下一個非空子表
if(f[j]&&j>=0){r[t].next=f[j];t=e[j];}?//鏈接兩個非空子表
}
r[t].next=0; //t指向最后一個非空子表中的最后一個結點
}

void?RadixSort(SLList?*l) //對*l中的成績做鏈式基數排序
{
int?f[101]e[101]; //f[i]和e[i]分別為第i個隊列的頭指針和尾指針
int?i;
for(i=0;i<(l->recnum);i++)?
l->r[i].next=i+1;
l->r[l->recnum].next=0; //將l改造為靜態鏈表
for(i=3;i>=0;--i) //按最低位優先依次對各關鍵字進行分配和收集?
{
Distribute(l->rj[i]fe); //第i趟分配
Collect(l->rj[i]fe); //第i趟收集
}
}

void?ShowRank(SLList?*l) //按名次順序輸出考生的名次和分數
{
int?rank=1i; //名次
printf(“考生名次和分數分別為:\n\n\n\n“);
printf(HEADER1); //格式輸出
printf(HEADER3);
printf(HEADER2);
printf(HEADER3);
for(i=l->r[0].next;rank<=l->recnum;rank++)
{
printf(“?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????213038??2011-03-10?21:31??多關鍵字排序\Debug\DisCol.exe

?????文件?????203320??2011-03-10?21:31??多關鍵字排序\Debug\DisCol.ilk

?????文件??????13261??2011-03-10?21:31??多關鍵字排序\Debug\DisCol.obj

????I.A....????223764??2011-03-10?21:31??多關鍵字排序\Debug\DisCol.pch

?????文件?????476160??2011-03-10?21:31??多關鍵字排序\Debug\DisCol.pdb

?????文件??????50176??2011-03-10?21:33??多關鍵字排序\Debug\vc60.idb

?????文件??????53248??2011-03-10?21:31??多關鍵字排序\Debug\vc60.pdb

?????文件???????5142??2011-03-10?21:20??多關鍵字排序\DisCol.cpp

?????文件???????3401??2011-03-09?22:01??多關鍵字排序\DisCol.dsp

?????文件????????518??2011-03-09?22:02??多關鍵字排序\DisCol.dsw

?????文件??????50176??2011-03-10?22:39??多關鍵字排序\DisCol.ncb

?????文件??????53760??2011-03-10?22:39??多關鍵字排序\DisCol.opt

?????文件????????746??2011-03-10?21:31??多關鍵字排序\DisCol.plg

?????文件?????100352??2011-03-10?22:51??多關鍵字排序\付樂穎——數據結構課程設計.doc

?????目錄??????????0??2011-03-10?21:31??多關鍵字排序\Debug

?????目錄??????????0??2011-03-10?22:53??多關鍵字排序

-----------?---------??----------?-----??----

??????????????1447062????????????????????16


評論

共有 條評論