#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;