【发布时间】:2015-10-19 11:56:11
【问题描述】:
现在我知道为什么在定义链表时使用指针了。 仅仅因为结构不能有递归定义,如果没有指针,编译器将无法计算节点结构的大小。
struct list{
int data;
struct list* next; // this is fine
};
但是当我将链表的第一个节点声明为:
struct list* head;
为什么这必须是一个指针?不能简单地声明为
struct list head;
这个地址用于进一步的用途?请澄清我的疑问。
【问题讨论】:
-
如何表示一个空列表?
-
那么这是第一个节点用作指针的唯一原因吗...?
-
链接列表中的所有其他节点都是一个指针。
-
@copo: 不,因为类/结构不能声明与自身类型相同的非指针成员,因为此时它不是完全定义的类型。它只能声明一个指向其自身类型的成员。
-
否 -- 通过将其声明为指针,您可以通过更改它指向的列表条目来移动头记录
标签: c++ c pointers linked-list structure