学生番号,英語,数学,物理という順で一行にかかれたデータを読み込み,各
学生番号,英語,数学,物理という順で一行にかかれたデータを読み込み,各自の合計点が大きい順にクイックソートで並び替えて,出力するプログラム
全体の流れは、
・先頭を示すポインタを準備。
・標準入力からデータをリンクドリスとに読み込む。
・構造体に対するポインタを使ってデータをソートする。
->一覧を保持する「ポインタへのポインタ」の一覧を作る。
->データへのポインタのリストを作る。
->クイックソートで並び替える。
・構造体に対するポインタを使って、データを表示する
このプログラムで、構造体に対するポインタを使ってクイックソートをするプログラムがわかりません。構造体に対するポインタを使って、left,right,pivotやwhile,ifの条件などをどう表現したらよいかが悩みの種です。
配列を使ったクイックソートのプログラムは出来ているので参考にしていますが。うまくいかない状況です。
どなたか教えていただけないでしょうか。
以下参考にしている配列を使ったクイックソートのプログラムの一部です。
void sort(int array[],int left, int right)
{
int pivot=0,i=0,j=0;
i=left;
j=right;
pivot=array[(left+right)/2];
while(1) {
while(array[i]<pivot) {
i++;
}
while (pivot<array[j]) {
j--;
}
if(i>=j) {
break;
}
swap(array,i,j);
i++;
j--;
}
if(left < i-1) {
sort(array,j+1,right);
}
if(j+1<right) {
sort(array,j+1,right);
}
}
void quickSort(int array[], int size)
{
int left=0, right=0;
left=0;
right=size-1;
sort(array,left,right);
return 1;
}
よろしくお願いします。