为什么链表中的节点被声明为指针?节点包含指向其中的指针部分以链接到另一个节点。那么为什么节点本身就是指针?
struct node
{
int data;
struct node *link;
} *start;
现在我们将节点引入
struct node *tmp;
现在这是一个节点,它是一个指向数据类型struct node的指针。但是对于链接,我们使用链接指针来链接另一个节点为什么我们将节点编码为
struct node tmp;
只是...这是因为分配动态内存..还是更多?
答案 0 :(得分:1)
C中链接列表中的节点始终在堆中分配,以便您管理其生命周期。因此,要创建,销毁和添加节点到列表,您需要在节点上声明一个指针:
struct node *tmp; // declaring
tmp = (node*) malloc(sizeof(node)); // creating (allocating memory)
// ... tmp initializing and processing
free(tmp); // removing (freeing memory)
tmp = NULL;
否则,如果您在堆栈node tmp;
上创建一个节点,它的生命周期将由语言规则管理,而不是由您的业务逻辑管理。