此方法為桶排法,肯定不如快排要快,寫此題的目的是為了鍛鍊自己的鍊錶應用能力
題目:
資料結構實驗之排序七:選課名單
time limit: 1000 ms memory limit: 65536 kib
submit statistic discuss
problem description
隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。
input
輸入第一行給出兩個正整數n( n ≤ 35000)和m(m ≤ 2000),其中n是全校學生總數,m是課程總數,隨後給出n行,每行包括學生姓名拼音+學號後兩位(字串總長度小於10)、數字s代表該學生選課的總數,隨後是s個課程編號,約定課程編號從1到m,資料之間以空格分隔。
output
按課程編號遞增的順序輸出課程編號、選課總人數以及選課學生名單,對選修同一門課程的學生按姓名的字典序輸出學生名單。資料之間以空格分隔,行末不得有多餘空格。
sample input
5 3
jack01 2 2 3
jone01 2 1 3
anni02 1 1
harry01 2 1 3
tbh27 1 1
sample output
1 4
anni02
harry01
jone01
tbh27
2 1
jack01
3 3
harry01
jack01
jone01
hint
source
xam
解題**:
#include
#include
#include
struct node
*head[2001];
void addi(char*name,int key);
void print(struct node*head);
int main()
//建立頭結點
while(n--)
}for(i=1;i<=m;i++)//所有課程進行輸出
}return0;}
void addi(char *name,int key)//name這時候是乙個陣列,所以用指標型別就可以
//當有滿足條件的出現的時候為了在最後加上,所以設立r的目的就是讓指標q指向最後乙個,不然就直接插入到這個的前面
p->next=q->next;
q->next=p;
}void print(struct node*head)//這時候head也是乙個陣列,所以用指標
}//簡單的輸出
思路:創立頭結點,課程編號相同的連線到同乙個頭結點的後面,此處的連線比較巧妙,凡是字典序比這個小的就插入到前面,不然,就讓指標指向最後乙個,連線到最後;輸出的時候從頭結點開始往後輸出,還有桶排的輸出 資料結構實驗之排序七 選課名單
隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n n 35000 和m m 2000 其中n是全校學生總數,m是課程總數,隨後給出n行,每行包括學生姓名拼音 ...
資料結構實驗之排序七 選課名單
time limit 1000ms memory limit 65536k 隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n n 35000 和m m 200...
資料結構實驗之排序七 選課名單
資料結構實驗之排序七 選課名單 time limit 1000ms memory limit 65536k 隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n ...