В каждом примере, который я встречал в Интернете об удалении узла в связанном списке, они используют этот метод для удаления первого узла:
Algorithm to delete first node of Singly Linked List
%%Input: head of the linked list
Begin:
If (head != NULL) then
toDelete ← head
head ← head.next
unalloc (toDelete)
End if
End
В этом коде они освобождают область памяти после того, как они удалили 1-й узел из списка. Но я использую memove() для удаления 1-го узла связанного списка.
...
if (key == 1){
memmove(head, head->next, sizeof(node));
return;
}
...
Итак, когда я использую memmove(), он автоматически освобождает область памяти?? И мой код более эффективен??
head
теперь удалит исходный 2-й узел без возможности освободить то, что было исходнымhead
узлом. - person David C. Rankin   schedule 01.11.2020del_node()
здесь Односвязный список (только узел, без оболочки) Почему лучше использовать как адрес указателя, так и указатель, см. Линус о понимании указателей - person David C. Rankin   schedule 01.11.2020