首页 > 解决方案 > 自己声明结构?

问题描述

我已经开始研究数据结构了,链表就弹出来了。链表背后的想法很简单,但实现(我使用 c++)有点令人困惑,尤其是关于链表中使用的节点。C++中为单链表定义节点的方式如下

// A linked list node 
struct Node { 
    int data; 
    struct Node* next; 
}; 

或者如果我们使用类,那么它是这样定义的。

class Node { 
public: 
    int data; 
    Node* next; 
}; 

我的困惑出现在这里。如何在 struct Node 中定义另一个具有相同名称的结构?我看到新结构是一个指向节点的指针,但是这个实现实际上是如何工作的?这真的很令人困惑:(

标签: c++11linked-listnodes

解决方案


要声明一个指向你不需要定义类的指针,只需要它的声明。因此这不是递归定义,编译器不会遇到问题。

你可以这样想:无论指针的类型如何,指针成员的大小都是相同的,它仍然只需要寻址内存中任何位置的容量。


推荐阅读