2012-10-16 92 views
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*/ 
    } 

我试图做多结构D的和连接它们。所以我假设我必须做的是为目录创建并分配一个指针,然后初始化一个结构体d并将创建的指针指向结构体d的内部。我的问题是我将如何创建d并设置*向上,向下和向右?

感谢您的帮助

+0

您是否尝试过搜索Google? – Antimony

+0

您可以从“根”节点或指针开始,找出将第一个项目添加到树的步骤。 – wallyk

回答

0

你动态分配struct dmalloc()。即,

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

一旦你有一个指向新创建struct d,分配给它的领域就像任何其他的C结构:

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

诀窍,当然是你分配什么到那些领域。那么,从他们的类型struct d *,它必须是一个指向struct d。因此,要么分配NULL指针常量,这表示没有任何内容,要么指定其他某些对象的地址。例如,

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; 

我don'tknow如果这个结构是为了比玩具更例子,但它看起来像某种树结构的节点。如果是这样的话,你会希望编写隐藏大部分指针操作的各种帮助函数。

struct d *new_node() { /* allocate a new d, set all fields to NULL */ } 
void insert_node_in_tree(struct d *tree, struct d *node) { ... } 

等等无论你正在建设的相关操作。