Вставка массива структуры в связанный список

#arrays #c #struct #linked-list

#массивы #c #структура #связанный список

Вопрос:

Мое упражнение со связанными списками требует, чтобы я создал массив struct, содержащий имя пользователя (определяемое как имя из 4 символов) и расстояние этого человека от меня.

После создания 3 элементов массива я помещаю каждого человека и его расстояние в связанный список.

Я создал массив и успешно распечатал его как есть, но возникли проблемы с составлением списка.

Мой код выглядит следующим образом, я был бы очень признателен за решение для запуска и запуска кода.

     typedef struct Node
{
    int dist;
    char name[4];
    struct Node* next;
}Node;

void main()
{
    int i;
    Node arr[3];

for (i = 0; i < 3; i  )
{
    printf("Enter name: n");
    scanf("%s", arr[i].name);

    printf("Enter distance: n");
    scanf("%d", amp;arr[i].dist);
}
printf("Basic printing of the ARRAY:");
for (i = 0; i < 3; i  )
{
    printf("Distance of %s is: %dn", arr[i].name, arr[i].dist);
}

printf("nnn");
Node* head;
Node* tail;
head = tail = NULL;
head = malloc(sizeof(Node));
tail = malloc(sizeof(Node));
for (i = 0; i < 3; i  )
{
    if (i == 0)
    {
    
        head->dist = arr[i].dist;
        head->name[4] = arr[i].name;
        tail = head;
    }
    else
    {
        tail->next = malloc(sizeof(Node));
        tail = tail->next;
        tail->next = NULL;
        tail->dist = arr[i].dist;
        tail->name[4] = arr[i].name;
    }
}
Node* temp;
temp = head;
printf("Now we print the listn");
for (i = 0; i < 3; i  )
{
    printf("Distance of %s is: %dn", temp->name, temp->dist);
    temp = temp->next;
}
  

Ответ №1:

Ну, я нашел исправление. При вводе имени в список правильно использовать strcpy.

 right way:
strcpy(tail->name, arr[i].name)

wrong way (what I used):
tail->name[4]=arr[i].name;