Я работаю над своим финальным проектом, и меня представили в связанные списки, которые я должен использовать.
Я невероятно расстроен, пытаясь понять, как работает код.Концепция для меня имеет полный смысл.Код, который я приведу в качестве примера, не делает этого.
typedef struct node_s {
char name[20];
int age;
struct node_s *listp;
} node;
while (!feof(inp)) {
temp = (node *)malloc(sizeof(node)); // creation of memory
fscanf(inp, "%s%d", temp->name, &temp->age);
if (head == NULL)
head = temp; // setting the head of the list
else {
tail->listp = temp; // else connecting to previous element
}
tail = temp; // updating the current element
tail->listp = NULL; // setting pointer to null.
}
Я запутался в том, как tail-> listp будет указывать на второй элемент, когда каждый раз он устанавливается в NULL.Чтобы дополнительно проиллюстрировать мою путаницу, в операторе else tail-> listp будет указывать на новый элемент, который понятен.
Но в конце мы указываем tail-> listp на NULL, который просто игнорирует оператор else.Тем не менее, код работает просто отлично, и вот я в замешательстве.