-1
我的程序的目標是刪除具有數字偶數值的所有元素。該程序工作正常,除非它應該刪除最後一個元素:這會導致程序崩潰。,C,碰撞,同時嘗試刪除列表中的最後一個元素
我創建了一個清單,這樣的結構:
struct elemento{
int dato;
struct elemento *next;
};
可以忽略如何創建列表,因爲我知道,誤差僅在這個函數:
struct elemento *eliminapari(struct elemento *p){
struct elemento * start = p;
struct elemento * temp, *temp2;
int cont;
cont = 0;
temp2 = p;
while(p != NULL && cont != 20){
temp2 = temp2->next;
if((p->dato % 2) == 0){
if (cont == 0){ //if first element
start = p->next;
free(p);
p = start;
}else if(p->next == NULL){ //if last element
temp2->next = NULL; //this would be the previous node
free(p);
p = NULL;
}else{
temp = p->next;
p->dato = p->next->dato;
p->next = p->next->next;
free(temp);
}
}else{printf("\n3\n"); p = p->next;}
cont = cont + 1;
}
return(start);
}
感謝。
它在哪裏崩潰,它如何崩潰,當時的結構如何,結構如何聲明,數據如何分配,你怎麼知道它沒有被釋放?我們不是心靈讀者。 –
'temp2-> next = NULL; //這將是前一個節點':'temp2'爲'NULL' – BLUEPIXY
你的代碼有點混亂,但我的猜測是你正在釋放一個NULL指針,嘗試釋放指針,然後將其設置爲NULL –