节点作为指针

时间:2015-11-17 19:02:19

标签: c data-structures

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

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

现在我们将节点引入

struct node *tmp;

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

struct node tmp;

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

2 个答案:

答案 0 :(得分:0)

是的,这是因为节点是动态分配的。

答案 1 :(得分:0)

struct node tmp可以使用tmp作为虚拟节点或sentinel节点,不使用它的数据,只是它是指向列表实际第一个节点的下一个指针。

struct node * tmp将使用tmp作为指向列表第一个节点的指针,或者在扫描列表时使用指向列表中某个节点的工作指针。

在某些情况下,还会使用列表结构:

struct list{
    struct node *head // pointer to first node
    struct node *tail // optional: pointer to last  node
    size_t size;      // optional: number of items in a list
}

循环列表可以仅使用指向最后一个节点的尾指针来实现,而该指针又有一个指向头/第一个节点的下一个指针。