排序之選課名單(利用桶排,鍊錶)

2021-08-15 14:28:27 字數 1540 閱讀 9363

此方法為桶排法,肯定不如快排要快,寫此題的目的是為了鍛鍊自己的鍊錶應用能力

題目:

資料結構實驗之排序七:選課名單

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 ...