gpt4 book ai didi

创建链表而不将节点声明为指针

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

我已经在谷歌和一些教科书上搜索了很长时间,但我似乎无法理解为什么在构建链表时节点需要是指针。

例如。如果我有一个节点定义为:

typedef struct Node{
int value;
struct Node *next;
} Node;

为什么要创建一个链表,我会说:

Node *a = malloc(sizeof(Node));
Node *b = malloc(sizeof(Node));
a->value = 1;
b->value = 2;

a->next = b;
b->next = NULL;

而不是:

Node a, b;
a.value = 1;
b.value = 2;

a.next = &b;
b.next = NULL;

据我了解,列表仍然可以正常引用和遍历,唯一的区别是使用点、符号语法而不是箭头?

最佳答案

您可以按照您提到的方式创建列表。

但是你必须关心列表成员的生命周期。如果你的

Node a, b;

在一个函数的范围内,然后在该函数返回后这些将丢失。

当您使用指针时,您通常会使用堆,并且实例会一直存在,直到它们被删除。

关于创建链表而不将节点声明为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331173/

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