Итак, недавно мне пришлось создать связанную структуру списка, и я думаю, что получил функцию создания ее для работы (надеюсь), но теперь у меня есть такая простая проблема, как ее печатать на консоли. Я не знаю, что-то не так с моей структурой, которую я создал, или что-то не так с печатью. Я был бы признателен, если кто-то может найти то, что случилось с моим кодом:Структура связанного списка печати C
struct z { int a; struct z *next; };
struct z *head, *node, *next;
int data, x = 1;
int CreateList() {
printf("Enter 0 to end\n");
printf("Enter data no. %d: ", x);
x++;
scanf("%d", &data);
if (data == 0) return 0;
head = (struct z *)malloc(sizeof(struct z));
if (head == NULL) { printf("Error creating head"); return 0; }
node = head;
node->a = data;
node->next = NULL;
while (data) {
next = (struct z *)malloc(sizeof(struct z));
if (next == NULL) { printf("Error creating next node no. %d", x); return 0;}
node = next;
printf("Enter data no. %d: ", x);
x++;
scanf("%d", &data);
node->a = data;
node->next = NULL;
}
return 0;
}
int main() {
CreateList();
node = head;
while (node != NULL) {
printf("%d ", node->a);
node = node->next; //<=== crash on this line
}
return 0;
}
Мой выход всегда только первый вошел INT, а затем все это падает на отмеченной линии.
Каким был вход, выход и ожидаемый выход? – chux
'node = next;' -> 'node-> next = next; node = next; 'Может быть, другие вещи слишком много зависят от ввода - который не отправлен. – chux
Функция собирает фрагменты данных, помещает их в переменную «a» и сохраняет ее, затем создает новую и повторяется. Результат, который я хочу, это все части данных, напечатанные в том порядке, в котором они были помещены в связанный список. – Thirstix