【问题标题】:Array of node pointers节点指针数组
【发布时间】:2021-09-14 13:14:03
【问题描述】:
class Node {
  Node **ptr;
  int size; //  current size of the node

Node::Node() {
  ptr = new Node *[MAX + 1];
}
void Tree::insert(int x) {
   Node *cursor = root;
   // some code...
   cursor->size++;
   cursor->ptr[cursor->size] = cursor->ptr[cursor->size - 1];

我对 cursor->ptr[cursor->size] = cursor->ptr[cursor->size - 1] 行在概念上的作用感到困惑。 cursor->ptr[cursor->size] 如果在上面代码的逻辑过程中之前没有使用过,它指向的是什么。我假设我们有指针数组,但是当我们创建它们时它们指向什么?你能解释一下这条线在做什么吗? 蒂亚!

【问题讨论】:

  • 要删除间接级别,我会将Node** ptr 更改为std::vector<Node*> ptr。我认为您的困惑可能是指针分为两级,一个是动态数组,另一个是该数组中的每个单独的节点。

标签: c++ pointers


【解决方案1】:

在您做任何事情之前,请实现您的 Descructors,这样您就不会遇到任何内存泄漏。当您在类中处理指针时,这是必须具备的。 关于这个问题。您的类正在构建一个指向单指针的双指针动态列表。列表中的这些指针当前指向其他节点指针。要真正理解这个逻辑,我建议你查看链表或双链表是如何工作的。 也许这可能会帮助你https://www.bitdegree.org/learn/linked-list-c-plus-plus

【讨论】:

  • 谢谢,我的理解正确吗?我不确定为什么我们需要动态双指针列表,我们可以创建动态单指针列表吗?
  • 就我而言应该足够了。但我还是会推荐给你试试看!
猜你喜欢
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多