Здесь я предполагаю, что подпись delete
на самом деле void delete(Node *head, int index);
и что у вас есть void RemoveHead(Node** head);
для первого узла.
Разница в том, что RemoveHead
должен изменить значение указатель head
. Поскольку C передает все параметры по значению, вы должны передать адрес любого выходного параметра. Из-за этого вы должны дать RemoveHead
адрес указателя, следовательно, другую подпись.
В отличие от этого, delete
only использует значение указателя head
, и оно сохраняет значение при возврате функции, поэтому нет необходимости передавать адрес.