【发布时间】:2016-11-01 08:44:31
【问题描述】:
我无法弄清楚为什么我对列表元素进行排序的代码不起作用,它对列表的前 5 个元素进行排序,然后就停止了。我知道这可能是一个愚蠢的问题,但我检查了循环很多时间,无法理解为什么它会在列表末尾之前到达出口。
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;
}
}
【问题讨论】:
-
在目前的形式中,这是一个“为什么这段代码不起作用”类型的问题,应该作为题外话关闭。您是否尝试在调试器中运行代码以查看其停止的原因?
标签: c list sorting bubble-sort