我之前在 Java 中广泛使用过链表,但我对 C++ 很陌生。我正在使用在项目中给我的这个节点类就好了
class Node
{
public:
Node(int data);
int m_data;
Node *m_next;
};
但我有一个问题没有得到很好的回答。为什么需要使用
Node *m_next;
指向列表中的下一个节点而不是
Node m_next;
我知道最好使用指针版本;我不会争论事实,但我不知道为什么它会更好。关于指针如何更好地分配内存,我得到了一个不太明确的答案,我想知道这里是否有人可以帮助我更好地理解这一点。
最佳答案
这不仅更好,而且是唯一可能的方法。
如果你在自身内部存储了一个 Node
object,那么 sizeof(Node)
会是什么?它将是 sizeof(int) + sizeof(Node)
,这将等于 sizeof(int) + (sizeof(int) + sizeof(Node))
,即将等于 sizeof(int) + (sizeof(int) + (sizeof(int) + sizeof(Node)))
等到无穷大。
这样的对象不可能存在。这是不可能。
关于c++ - 为什么链表使用指针而不是在节点内存储节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543780/