gpt4 book ai didi

c - 无法理解链表(c)

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:51 24 4
gpt4 key购买 nike

我不明白链表是如何工作的。

假设我有一些代码

typedef struct trip {
int id, year, something;
char name[100], destination[100];
struct trip *next; //X1

}TRIP; //X2
FILE *fr;
TRIP *p_a, *p_p; //X3
fr =fopen("list.txt","r");
int j=0;
p_p = (TRIP *) malloc(sizeof(TRIP));
p_a = p_p;
while ((fscanf(fr,"%d",&p_a->id)), p_a->id>0 )
{
fscanf(fr,"%s",&p_a->name);
fscanf(fr,"%s",&p_a->destination);
fscanf(fr,"%d",&p_a->year);
fscanf(fr,"%d",&p_a->something);
p_a->next = (TRIP *) malloc(sizeof(TRIP));
p_a = p_a->next;

}
p_a->next = NULL; //X4
fclose(fr);
return p_p;
}

我不确定某些行的作用。这些行用 x1 x2 x3 x4 注释。请有人能给我解释一下吗?

最佳答案

x1

struct trip *next; //X1

在“旅行”数据结构中,它包含指向另一个旅行数据结构的指针。

您可以使用它通过指向另一个结构来“链接”链表的元素。

x2

}TRIP; //X2

这将(我忘记了合适的词)别名结构。旅行 = 旅行。

也就是说

trip a; // OR
TRIP a;

都有效

x3

TRIP *p_a, *p_p; //X3

这是声明两个变量,p_a,p_p,类型为 TRIP *(或 trip *,它们是等价的)

此类型是指向行程数据结构的指针。

x4

p_a->next = NULL; //X4

这是指针中的成员选择。也就是说,它现在将 p_a 指向的行程结构中的“下一个”元素的值设置为 NULL。

如果有帮助的话,它等同于

(*p_a).next = NULL

关于c - 无法理解链表(c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com