【发布时间】:2015-07-06 16:13:34
【问题描述】:
我必须从链表中删除所有小于或等于“媒体”的元素。我已经编写了这个函数,但它在某些输入上不起作用。
代码:
typedef struct lista {
int dato;
struct lista *next;
}
node;
......
.....
.....
void filtra_elementi(node ** head, int media)
{
node *prec, *corr;
while(((*head)->dato <= media) &&((*head!=NULL)))
{
corr=(*head)->next;
free(*head);
*head=corr;
}
prec=*head; corr=(*head)->next;
while(corr!=NULL)
{
if(corr->dato<=media)
{
prec->next=corr->next;
//free(corr);
corr=prec->next;
}
else prec=corr; corr=corr->next;
}
}
这里是函数。 如果列表是,它不起作用 0 10 1 11 3 13 4 14 5 15 有人可以向我解释为什么吗?谢谢。
【问题讨论】:
-
你为什么不把你的代码放在这里。
-
请具体说明,它不起作用是什么意思,即期望什么以及实际输出/结果是什么
-
你是对的,但我不知道该怎么做。目标是删除不等于“媒体”(参数之一)的元素。但是如果我将输入 0 10 1 11 3 13 4 14 5 15 作为原始列表提交,那么第二个就会出现问题
-
是的,但是 what “某事”?
-
while(((*head)->dato <= media) &&((*head!=NULL))) {更改顺序。 (短路保证订单)