2
Я пытаюсь распечатать связанный список в том порядке, в котором я создал каждый узел в связанном списке. Например, он должен распечатать «0 1 2 3 4», но мой код ошибочен и ничего не распечатывает. Я думаю, что проблема лежит где-то в моей петле.Single Linked List print in order of for loop
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main(void)
{
struct node *head = NULL;
struct node *tail = NULL;
struct node *current;
current = head;
int i;
for(i = 0; i <= 9; i++)
{
current = (struct node*)malloc(sizeof(struct node));
current-> data = i;
current-> next = tail;
tail = current;
current = current->next;
}
current = head;
while(current)
{
printf("i: %d\n", current-> data);
current = current->next;
}
}
Спасибо! Я закончил его самостоятельно, и теперь понимаю основы указателей. Моя выглядит несколько иначе, чем ваша, в том, что мой ток был разделен, и мой темп был тогда настроен на текущую, но такую же основную предпосылку. –
На самом деле я пробовал ваш код, вы забыли установить current-> рядом с NULL в конце инструкции else. Вам это нужно, потому что иначе, когда вы печатаете список в цикле while, он не будет знать, когда остановиться и сделать странный цикл. –
@ DanielMartin На самом деле следующий указатель для каждого нового узла должен быть установлен на 'NULL' в момент создания узла. –