Добавление к круговому связанному списку в C - PullRequest
0 голосов
/ 24 марта 2020

Новый узел успешно создан, и 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;
   }
}
...