为什么链表中的节点被声明为指针?节点包含指向其中的指针部分以链接到另一个节点。那么为什么节点本身就是指针?
struct node
{
int data;
struct node *link;
} *start;
现在我们将节点引入
struct node *tmp;
现在这是一个节点,它是指向数据类型struct node的指针。但是对于链接,我们使用链接指针链接另一个节点 为什么我们将节点编码为
struct node tmp;
只是...这是因为分配动态内存..还是更多?
答案 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
}
循环列表可以仅使用指向最后一个节点的尾指针来实现,而该指针又有一个指向头/第一个节点的下一个指针。