节点数据类型

时间:2015-11-17 19:32:31

标签: c data-structures

为什么链表中的节点被声明为指针?节点包含指向其中的指针部分以链接到另一个节点。那么为什么节点本身就是指针?

struct node 
{ 
    int data; 
    struct node *link; 
} *start;

现在我们将节点引入

struct node *tmp;

现在这是一个节点,它是一个指向数据类型struct node的指针。但是对于链接,我们使用链接指针来链接另一个节点为什么我们将节点编码为

struct node tmp;

只是...这是因为分配动态内存..还是更多?

1 个答案:

答案 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;上创建一个节点,它的生命周期将由语言规则管理,而不是由您的业务逻辑管理。