Похоже, вы используете связанный список в качестве базы данных рецептов.Редактирование узла должно быть простым.Просто бегите по списку, пока не найдете соответствующий recipe_id, затем отредактируйте поля с помощью нового пользовательского ввода.
NODE *tmp = list;
while(tmp && tmp->recipe_id != recipe_id_to_edit)
tmp = tmp->next;
if(tmp) {
/* edit node here */
}
Удаление узла можно сделать следующим образом.
NODE *tmp = list;
if(tmp) {
if(tmp->recipe_id == recipe_id_to_delete) {
list = list->next;
free(tmp);
}
else {
while(tmp->next && tmp->next->recipe_id != recipe_id_to_delete)
tmp = tmp->next;
if(tmp->next) {
NODE *to_free = tmp->next;
tmp->next = tmp->next->next;
free(to_free);
}
}
}
Отображение данных в списке во время выполнения должно быть простым, например
NODE *tmp = list;
while(tmp) {
printf("%s %s\n", tmp->field1, tmp->field2 );
tmp = tmp->next
}
Этопри условии, что ваш список односвязно связан с NULL.