为什么宁可使用指向结构的指针而不是链式列表中的常规struct-type vars?

时间:2016-03-27 01:17:24

标签: c++ c pointers struct

在大学课堂上,他们告诉我们如果我们想创建一个链式列表,我们就会创建一个结构并将列表的每个部分作为指针处理。 像这样的东西:

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;

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

1 个答案:

答案 0 :(得分:0)

您可以通过以下两种方式分配列表节点:静态o动态且可行。但是使用感链表是使列表以任意大小增长,用任意数量的节点填充列表。

如果您有静态节点,为什么要创建链接列表?

如果你不知道节点数:你如何静态地声明那个节点?