Cześć, mam taką funkcję do usuwania
void usun(){
int flag = 0; // dodalem sam 0
char nazwisko_key[20];
char imie_key[20];
dane *temp;
temp = head;
if(head == NULL)
printf("Nie ma czego usuwać\n");
else {
printf("Wpisz imie i nazwisko ktore chcesz usunac\n");
scanf("%s %s",&imie_key,&nazwisko_key);
while(temp != NULL){
if(strcmp(temp->imie,imie_key) == 0 && strcmp(temp->nazwisko,nazwisko_key) == 0){
flag = 1;
if(temp==head){ // Jak pierwszy element
head=head->nast_wsk;
head->poprz_wsk = NULL;
}
else{
if(temp->nast_wsk == NULL){ // Jak ostatni element
temp->poprz_wsk->nast_wsk = NULL;
}
else{
temp->poprz_wsk->nast_wsk = temp->nast_wsk;
temp->nast_wsk->poprz_wsk = temp->poprz_wsk;
}
free(temp);
}
}
temp=temp->nast_wsk;
}
}
if(flag == 0)
printf("Nie znaleziono osoby\n");
if(flag == 1)
printf("Usunięto\n");
}
Jak jest troche wpisów w liście to działa spoko, ale jak zostaje jeden(lub tylko 1 element jest wprowadzony) to wywala mi naruszenie ochrony pamięci.
I nie wiem gdzie to się sypie więc proszę was o pomoc.