0

我一直在尝试用 C 中的指针创建一个目录树。

我认为使用某种带有指针的结构会更容易,它类似于 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 并将它们连接起来。所以我假设我必须做的是为目录创建并分配一个指针,然后初始化一个结构 d 并使创建的指针指向结构 d 内部。我的问题是如何创建 d 并设置 *up、*down 和 *right?

感谢您的帮助

4

1 回答 1

0

您动态分配一个struct dwith malloc()。IE,

struct d *dp = malloc(sizeof(*dp));

一旦有了指向新创建的指针,struct d就可以像任何其他 C 结构一样分配给它的字段:

dp->up = /* ... */;
dp->down = /* ... */;
dp->right = /* ... */;

当然,诀窍在于您分配给这些字段的内容。好吧,从它们的类型struct d *来看,它必须是指向 a 的指针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) { ... }

等等,无论您正在构建什么,都可以进行相关操作。

于 2012-10-16T02:15:27.787 回答