Здравствуйте, я работаю над связанным списком - проект на основе структуры, и я прошу вас, ребята, для небольшой помощи. Мне нужно удалить узел из связанного списка, когда одна строка является частью строки из данных структуры.Удаление узлов в связанном списке, когда строки соответствуют
До сих пор я придумал это. Я смог использовать strstr()
, чтобы найти совпадение в двух строках, но после этого отображает, что строка # 1 находится в строке # 2, вся программа падает.
void zmaz(STUFF *p_akt, STUFF *p_prv, STUFF *p_vymaz){
char meno_autor[100];
scanf("%s", meno_autor);
while(p_akt!=NULL) {
if(strstr(p_akt->autori,meno_autor)!=NULL){
printf("string %s is in %s\n", meno_autor, p_akt->autori);
p_vymaz=p_akt;
if (p_prv == p_vymaz){ //deleting the first node
p_prv = p_prv->p_dalsi;
}
else {
p_akt = p_prv;
while (p_akt->p_dalsi != p_vymaz) p_akt = p_akt->p_dalsi;
p_akt->p_dalsi = p_vymaz->p_dalsi;
}
free((void*)p_vymaz);
}
p_akt=p_akt->p_dalsi;
}
}
Мне не нужно удалять только узел, но также перемещать следующие узлы, чтобы между ними не было никакого промежутка. Я пытался объяснить все как мог. Спасибо!
попробуйте использовать отладчик. –