创建链表:C++结构体中node *next语句的含义解析
结构体中
node *next;的具体含义 先给出对应的节点结构体定义方便对照:
struct node { int data; node *next; };
- 这行本质是定义了一个指向
node类型结构体的指针,也就是单链表结构里标准的「后继指针」。 - 它存的是当前节点的下一个链表节点的内存地址:每个链表节点一方面用
data存自己要保存的整数值,另一方面靠这个next指针“串”起后面的节点,从链表头节点开始顺着next一层一层找,就能遍历完整个链表的所有内容。 - 这里必须用指针而不能直接写
node next;:结构体定义阶段编译器还没拿到node的完整大小信息,没法在结构体内部嵌入一个完整的同类型结构体实例;但指针的内存大小是固定的(64位环境下占8字节、32位环境下占4字节),所以这种写法是合法的。 - 实际使用时,链表尾节点的
next会被赋值为空指针nullptr,作为链表遍历结束的标记,代表当前节点后面没有其他节点了。
内容的提问来源于stack exchange,提问作者Vishwaroop Gangarde
相关产品推荐
相关产品推荐

