Я предполагаю, что вы имеете дело со связанным списком. Обычно они состоят из записей, которые содержат данные и ссылку на следующее имя (то есть имя):
struct node {
int data;
struct node *next;
}
Как видите, ссылка - это указатель на C. Который должен указывать на следующую запись. Чтобы начать обход списка, у вас обычно есть голова.
Если вы хотите удалить запись, вам нужно пройти по списку, и как только вы найдете запись, которую хотите удалить, просто переставьте указатели:
void removeEntry(int data, struct node *head) {
struct node *prev = NULL, *current = head;
while(current->data != data) {
prev = current; // current will always point to the entry in front of current
current = current->next;
if(current == NULL) // end of list and no match
return;
}
// now current is pointing to the entry you want to remove
// remove it just by rearrangeing pointers
prev->next = current->next;
free(current); // I assume you malloc'ed the memory
}
Примечание. Обратите внимание, что здесь я пропустил проверку ошибок. Кроме того, иногда заголовок является фиксированным элементом, в котором данные не сохраняются (в моем случае это будет работать), иногда заголовок может содержать сами данные (в этом случае вам необходимо проверить, является ли элемент, который вы хотите удалить, первым элементом, и повторно связать его). голова соответственно)