Новый узел успешно создан, и new_node указывает на new_node, но как только я ввожу инструкцию else, верхняя точка указывает на new_node без объявления. Новый узел добавляется в список каждый раз, но каждый добавляемый новый узел устанавливается как new_node. Например, когда я добавляю 20 новых_узлов, каждый из 20 узлов является самым новым введенным узлом. Почему это происходит? Я считаю, что я следую учебным пособиям онлайн, но, очевидно, что-то, что я делаю, неправильно, любая помощь будет оценена.
void add_to_end(int data, struct node **top) {
struct node *new_node = (struct node*)malloc(sizeof(struct node));
new_node->value = data;
if(*top == NULL) {
new_node->next = new_node;
*top = new_node;
}
else {
struct node *curr = *top;
while(curr->next != *top) {
curr = (curr->next);
}
curr->next = new_node;
new_node->next = *top;
}
}