출력이 잘못되었습니다. 두 번째 열차의 이름이 첫 번째 열차 대신 나타나고 첫 열차의 이름이 모두 손실됩니다. 논리적 결함은 어디에 있습니까? 또한 뿌리의 목적은 무엇입니까? 이름이 어디로왜 내 연결된 목록이 올바른 순서로 인쇄되지 않습니까?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct trainset {
char name[50];
int price;
struct trainset *next;
};
void show_list(struct trainset *list);
int main (void){
struct trainset *root;
root = (struct trainset *)malloc(sizeof(struct trainset));
strncpy(root ->name, " ", 50);
root ->price = 0;
root ->next = 0;
struct trainset *first_train;
first_train = (struct trainset *) malloc(sizeof(struct trainset));
root ->next = first_train;
strncpy(first_train->name, "Fantasy Train Set", 50);
first_train->price = 129;
first_train->next = NULL;
struct trainset *second_train;
second_train = (struct trainset *)malloc(sizeof(struct trainset));
first_train->next = second_train;
strncpy(first_train->name, "Uncle Bobs train set", 50);
second_train ->price = 69;
second_train ->next = NULL;
struct trainset *third_train;
third_train = (struct trainset *)malloc(sizeof(struct trainset));
second_train->next = third_train;
strncpy(third_train ->name, "Budha Bread Train", 50);
third_train ->price = 169;
third_train ->next = NULL;
show_list(first_train);
return 0;
}
void show_list(struct trainset *list)
{
while(list->next!=NULL)
{
printf("train set name: %s, Train price: %d\n", list->name, list->price);
list = list->next;
}
printf("train set name: %s, train price: %d", list->name, list->price);
}