【问题标题】:C++ Linked List: Node inside of another NodeC ++链表:另一个节点内的节点
【发布时间】:2013-12-02 10:43:36
【问题描述】:

是否可以在另一个节点中指向一个节点:

struct Node{
    Node my_Node;
    Node *next;
};

int main(){
    Node *practice = new Node;
    practice -> next = &(practice -> my_Node);

    return 0;
}

【问题讨论】:

  • 此代码错误。您不能在自身内部声明节点(即 my_Node)
  • 我可以使用 typedef 来避免这种情况吗?
  • 我认为没有。在结构/类中,你只能声明一个指向结构/类本身的指针。
  • 你认为你为什么需要这个?你认为它会解决什么问题?见:The XY problem
  • 出于不切实际的原因。我只是想知道如果发生这种情况,c++ 会做什么。有没有其他方法可以在类中拥有无限的类序列?

标签: c++ list pointers linked-list nodes


【解决方案1】:
struct Node{
    Node my_Node; // this is not allowed
    Node *next;
};

因为在 c 或 c++ 中不允许创建不完整类型的变量。因为那时编译器不知道Node 类型是什么以及需要多少空间?

【讨论】:

    【解决方案2】:

    你不能在Node 中声明Node,首先它是一个不完整的类型,其次它需要无限的空间来允许它(因为一个节点必须包含一个必须包含一个节点等的节点......)这是不可能的。另一方面,您可以在Node 中使用Node *

    【讨论】:

    • 如果我在 Node 上使用 typedef,我能以某种方式解决这个问题吗?
    • @user3007077:你怎么可能认为 typedef 会允许你创建无限的嵌套节点堆栈?
    • @user3007077 这对你没有帮助,就像 Beta 说你不能有无限嵌套,正如 Benjamin 所问,你试图解决什么问题,指向 Node 的指针没有帮助?跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2021-11-19
    • 2022-01-23
    • 1970-01-01
    • 2023-01-25
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多