今回も課題が詰まってしまい、悩んでおります。
今回の課題の内容は、構造体を使っての双方向の連結リストです。
0~9までの乱数を30個入れて、出来上がった連結リストを昇順でソートして表示、逆表示もする。
ソートにかかった時間も表示する事。
ただし、ソートはなるべく早くソートする。
という内容でした。
今回使うプログラムのソースファイルは3つに分かれています。
4-1.c・・・乱数生成、ソート前とソート後の表示、ソート後の逆表示、かかった時間の表示に使う。書き換えはしない。
4-2.c・・・ソートをするプログラムを書くところ。
ex4.h・・・構造体作って、関数の前宣言書いている。書き換えはしない。
という風になっております。
ソートを検索してバブルソートでソートしようとプログラムを書き込んだのですが、動かなくなってしまいました。
どうすればソートができるのかがわかりません、どうか教えてください・・・
今回3つのファイルになっているのでソートをする4-2.cを乗せて後は圧縮ファイルで付属させようと思います。
下が4-2.cのプログラムです。
#include <stdio.h>
#include <stdlib.h> /* NULLポインタ */
#include "ex4.h"
void sort(struct node **start, struct node **end)
{
/* 変数宣言(必要に応じて増やす) */
struct node *s, *e, *p, *q, *tmp;
/* 初期値代入 */
s = *start;
e = *end;
/* TO DO ここに必要な処理を記述する */
for(p=s; p->next!=NULL; p = p->next)
{
for(q=e; q->prev!=NULL; q = q->prev)
{
if(p->data >= q->data) //p->data が q->data以上の時
{
tmp = p;
p->data = q->data;
p->next = q->next;
p->prev = q->prev;
q = tmp;
}
}
}
/* 結果代入 */
*start = s;
*end = e;
}
あと・・・課題には関係ありませんが、前回の課題で色々と解説をしてくださったのに返信ができずに過去ログという形で終わらせてしまってすみませんでした・・・
この場をかりてお詫び申し上げます・・・OTL