В основном я должен удалить определенный элемент из связанного списка. Этот код работает:Удаление из списка в C
void delete_(Item client){
link s=head,r;
if(head->item==client){
r=head;
head=head->next;
free(r);
}
else{
while(s->next!=NULL){
if(s->next->item==client){
r=s->next;
s->next=s->next->next;
free(r);
}
else
s=s->next;
}
}
}
Теперь я пытался уменьшить и компактный код с использованием для 2 с указателем, но я не могу понять, как сделать это работает. Вот код:
void delete_(Item client){
link x,r,p;
for(x=head;x!=NULL;p=x,x=x->next){
if(x->item==client){
r=x;
p->next=x->next;
free(r);
}
}
}
У вас был рабочий код, а затем ... он был изменен на нерабочий код? IME, это всегда плохой план :) –
«Я не могу понять, как это сделать» - ну, это потому, что вы его искубили. Простой код получает отлаженную и сделанную работу, «умный код» отправляется на SO :( –
p не правильно инициализирован во второй версии – OznOg