Я написал этот код, и я хотел бы знать, в чем моя проблема, если вы можете помочь мне исправить мой код, который навязывает один из урских, это мне очень помогло. . Edit: Я изменил его к этому, и теперь оно не дает мне ошибку во время выполнения, но когда я печатаю имя, или проверить, если узел существует, то он говорит, что это ...Какая ошибка? удаление узла, связанного списка,
void node_delete(friend *amit) // Deleting a node
{
friend* temp;
int flag = 0;
while (head != NULL) // As long the node isnt the last one
{
if (0 == (strcmp(head -> next -> name, amit -> name))) // If the name that the user entered matchs a name in the linked list,
{ // It'll skip it
temp = head -> next;
head -> next = head -> next -> next; // Deletes a node from the linked list
flag = 1;
}
if (flag == 1) break;
head = head -> next; // Going to the next node
}
free(temp); // Freeing the deleted node
printf ("%s\n", amit -> name);
}
и в основном:
amit.name = "amit"
amit.age = 16
amit.gender = 'm'
node_delete(&amit);
и структура определяют:
typedef struct friend // The struct
{
char *name;
int age;
char gender;
struct friend* next; // A pointer that points to the next node in the linked list
}friend;
Большое спасибо :)
Что не работаю г? –
Проблема IMHO в том, что у вас слишком много переменных, плавающих вокруг, и ваша программа становится жонглирующим актом, чтобы держать их в курсе последних событий. Также: вы только сравниваете имя; было бы намного проще, если бы функция удаления приняла в качестве аргумента строку. – wildplasser
Что это значит? как insted of senting & amit, отправлено только amit -> name? –