我需要C中列表和节点的帮助。我在.h文件中将它们定义为struct:
typedef struct node{
int value;
struct node*prox;
}node;
typedef Nodo *list;
我无法理解为什么删除所有奇数的函数不起作用。该程序正在崩溃。我在哪里做错了?
list delete_odd_numbers(list l){
node*temp;
node*current;
node*prev;
if(l->value%2!=0){
temp=l;
l=l->prox;
free(temp);
}else{
prev=NULL;
current=l;
while(current!=NULL){
if(current!=NULL &¤t->value%2!=0){
temp=current;
prev->prox=current->prox;
free(temp);
}else{
prev=current;
current=current->prox;
}
}
}
return l;
}
答案 0 :(得分:0)
您是否知道如何使用调试器并在查看变量值时逐步执行代码?在任何情况下,在大的“else”语句中,您正在初始化prev = NULL,然后进一步向下,您正在引用prev-> prox - 所以您要取消引用空指针