gpt4 book ai didi

c++ - 为什么在链表中使用指向结构的指针而不是常规的结构类型变量?

转载 作者:行者123 更新时间:2023-11-30 17:03:13 25 4
gpt4 key购买 nike

在大学类里面,他们告诉我们,如果我们想创建一个链表,我们需要创建一个结构并将列表的每个部分作为指针来处理。像这样的东西:

typedef struct node_elem {
int key;
int value;
struct node_elem* next;
} node;
typedef node* node_ptr;

int main() {
node_ptr b;
b = (node_ptr) malloc(sizeof(node));
b->key = 2; b->value=20;

我认为这是将数据写入结构的唯一可靠方法,但我刚刚尝试了以下方法,它也有效:

node a, c; // this instead of pointer, direct declaration
node_ptr b;
b = (node_ptr) malloc(sizeof(node));
a.key = 1; a.value = 10;
a.next = b;
b->key = 2; b->value = 20;
b->next = &c;
c.key = 3; c.value = 30;

不,我的问题是:为什么还要使用指针变体?另一种方法似乎更容易,因为我不需要单独分配内存。不管怎样,我都可以遍历列表。

最佳答案

您可以通过两种方式分配列表节点:静态或动态,并且有效。但链表的使用意义是让链表以任意大小增长,用任意数量的节点填充链表。

既然有静态节点,为什么要做链表呢?

如果您不知道节点数量:如何静态声明节点?

关于c++ - 为什么在链表中使用指向结构的指针而不是常规的结构类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36242819/

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