在大学课堂上,他们告诉我们如果我们想创建一个链式列表,我们就会创建一个结构并将列表的每个部分作为指针处理。 像这样的东西:
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;
不,我的问题是:为什么甚至使用指针变体?另一种方式似乎更容易,因为我不需要单独分配内存。无论哪种方式,我都可以遍历列表。
答案 0 :(得分:0)
您可以通过以下两种方式分配列表节点:静态o动态且可行。但是使用感链表是使列表以任意大小增长,用任意数量的节点填充列表。
如果您有静态节点,为什么要创建链接列表?
如果你不知道节点数:你如何静态地声明那个节点?