我一直在尝试使用带有指针的目录创建一个树。
我认为使用带有指针的某种结构会更容易,这类似于Java中的类。
所以我会使用这样的东西:
struct d
{
struct d *up /*point to parent*/
struct d *down /*point to child*/
struct d *right /*point to right*/
}
generate_tree(struct **d)
{
/*my code*/
}
我正在尝试制作多个结构并连接它们。所以我假设我必须做的是为目录创建并分配一个指针然后初始化一个struct d并让创建的指针指向struct d内部。我的问题是如何创建d并设置* up,* down和* right?
感谢您的帮助
答案 0 :(得分:0)
您使用struct d
动态分配malloc()
。即,
struct d *dp = malloc(sizeof(*dp));
一旦有了指向新创建的struct d
的指针,就像任何其他C结构一样分配给它的字段:
dp->up = /* ... */;
dp->down = /* ... */;
dp->right = /* ... */;
当然,诀窍就是你分配给那些领域。好吧,从它们的类型struct d *
开始,它必须是指向struct d
的指针。因此,要么指定NULL指针常量,这表示那里没有任何内容,要么指定其他一些structd d
对象的地址。例如,
struct d *up = malloc(sizeof(*up));
struct d *down = malloc(sizeof(*down));
struct d *right = malloc(sizeof(*right));
d->up = up;
d->down = down;
d->right;
我不知道这个结构是否只是一个玩具示例,但它看起来像某种树结构中的节点。如果是这种情况,你会想要编写各种隐藏大部分指针操作的辅助函数。
struct d *new_node() { /* allocate a new d, set all fields to NULL */ }
void insert_node_in_tree(struct d *tree, struct d *node) { ... }
等等,无论你正在建设什么,都要进行相关的操作。