typedef struct node_ {
avl_node node;
some_struct *data;
}node_t;
现在如果一个函数(API)返回我指向数据的指针有一种方法,我可以得到结构node_t指针吗?
例如:
node_t *a = malloc(sizeof(node_t));
a->data = malloc(sizeof(some_struct));
//some code
//a->data->key = some_val;
//avl_insert(a->data->key)
/* API to get the data, which return pointer of type some_struct*/
some_struct *temp;
temp = get_data(key)
我有办法获得" temp"的指针node_t。
请让我知道最好的方法是什么。
答案 0 :(得分:2)
如果需要返回包含数据的节点,则必须自己构建关联。也许最直接的方法是扩展some_struct
:
typedef struct my_some_struct {
some_struct ss;
struct node_ *back;
} my_some_struct;
typedef struct node_ {
avl_node node;
my_some_struct *data;
}node_t;
node_t *a = malloc(sizeof(node_t));
a->data = malloc(sizeof(my_some_struct));
a->data->back = a;
my_some_struct *temp;
temp = get_data(key);
some_struct *ss = &temp->ss;
node_t *back = tmp->back;
或者,您可以使用API扩展AVL树,以返回给定node_t *
的{{1}}。
key