リストの要素をソートするコードが機能しない理由を理解できず、リストの最初の5要素をソートしてから停止します。私はそれが愚かな問題かもしれないことを知っているが、私はループを多くの時間をチェックし、リストの終わりの前に出口に達する理由を理解できない。C:リストソートコードが機能しない
typedef enum { NOTORD=0, TIME=1, POSITION=2 } ord_t;
typedef struct elem {
double position;
double time;
flag_t flag;
struct elem * next;
} elem_t;
typedef struct {
elem_t * head;
int nelem;
ord_t ord;
} lista_t;
void set_ordinata_time (lista_t * l)
{
if (l->ord!=TIME) {
elem_t * aux, *corr, *succ;
int scambio;
corr=l->head;
succ=l->head->next;
aux=malloc(sizeof(elem_t));
scambio=1;
while(scambio==1)
{
corr=l->head;
succ=l->head->next;
scambio=0;
while(succ != NULL)
{
if (corr->time > succ->time)
{
aux=corr;
aux->next=succ->next;
corr=succ;
succ=aux;
corr->next=succ;
scambio=1;
}
corr=succ; succ=succ->next;
}
}
l->ord=TIME;
}
}
現在の形では、これは「なぜこのコードが動作しないのですか」という質問です。これは、offtopicとして閉じられるべきです。デバッガでコードを実行して、なぜ停止するのか確認しましたか? – fvu