在 C++ 中创建非二叉树结构
Creating a non-binary tree structure in C++
我需要帮助创建非二叉树结构。此结构必须包含一个 class node
以及节点需要的指向节点的指针。这是我感到困惑的地方。
这是我的 class node
:
class nodo{
public:
int id;
char info[255];
nodo **son,*father;
nodo()
{
strcpy(info,"");
son=(nodo*)malloc(sizeof(nodo));
}
};
据我了解,每次我需要一个新的 son
指针时,我都必须执行以下代码:
son=(nodo*)realloc(sizeof(nodo)*t)
t
是我要添加的节点数加 1。我似乎不明白如何访问指针。比如我已经添加了2个sons
,我想访问第二个,怎么办?
有没有其他方法可以解决这个问题?
感谢任何帮助。
您正在编写 C++,而不是 C。不要尝试从头开始重新实现您自己的动态数组。标准库已经有 std::vector
可以为您处理。
class nodo{
public:
int id;
std::string info;
nodo *parent;
std:::vector<nodo *> children;
nodo(nodo *parent) : parent(parent)
{
}
void add_child(nodo *child) { children.push_back(child); }
};
您正在尝试为每个节点动态创建一个子指针数组。只要您事先知道该节点将有多少个子节点,这种方法就很好。
您的构造函数应如下所示:
nodo(int numsons) {
son = new nodo*[numsons];
}
这将分配一个子节点数组,您需要在解构函数中将其删除。
如果您事先不知道该节点将有多少个子节点(当您调用构造函数时),您应该使用向量。
我需要帮助创建非二叉树结构。此结构必须包含一个 class node
以及节点需要的指向节点的指针。这是我感到困惑的地方。
这是我的 class node
:
class nodo{
public:
int id;
char info[255];
nodo **son,*father;
nodo()
{
strcpy(info,"");
son=(nodo*)malloc(sizeof(nodo));
}
};
据我了解,每次我需要一个新的 son
指针时,我都必须执行以下代码:
son=(nodo*)realloc(sizeof(nodo)*t)
t
是我要添加的节点数加 1。我似乎不明白如何访问指针。比如我已经添加了2个sons
,我想访问第二个,怎么办?
有没有其他方法可以解决这个问题?
感谢任何帮助。
您正在编写 C++,而不是 C。不要尝试从头开始重新实现您自己的动态数组。标准库已经有 std::vector
可以为您处理。
class nodo{
public:
int id;
std::string info;
nodo *parent;
std:::vector<nodo *> children;
nodo(nodo *parent) : parent(parent)
{
}
void add_child(nodo *child) { children.push_back(child); }
};
您正在尝试为每个节点动态创建一个子指针数组。只要您事先知道该节点将有多少个子节点,这种方法就很好。
您的构造函数应如下所示:
nodo(int numsons) {
son = new nodo*[numsons];
}
这将分配一个子节点数组,您需要在解构函数中将其删除。
如果您事先不知道该节点将有多少个子节点(当您调用构造函数时),您应该使用向量。