2016-08-01 155 views
0

有对BST指针指向嵌套结构

typedef struct _price { 
    double price; 
    char* shopname; 
} pricing; 

typedef struct _bstnode { 
    int id; 
    pricing** pl; 
    int nr_of_prices; 
    struct _bstnode *left; 
    struct _bstnode *right; 
    struct _bstnode *parent; 
} bstnode; 

我需要做的是可以添加和更新的价格和店铺名称中BST节点的功能两种结构。一个节点可能包含许多商店和价格

void updatePrice(bstnode* root, int id, char* shop, double price){ 
//to do 
} 

我可以添加一个商店的名称和价格,但如何添加几个对象?

(*(root->pl))=malloc(sizeof (pricing)); // ---?? 
(*(root->pl))->price=price; 
(*(root->pl))->shopname=shop; 
+0

你的意思是你想要的指针的动态“数组”到'pricing'?然后首先考虑如何通常使用例如创建动态数组'malloc'和'realloc'。然后考虑一下,如果你真的需要一个指向数组结构的指针数组,或者只是一个结构数组。 –

+0

来自二元搜索树的节点有一组结构“定价”,我需要在节点中添加和编辑结构,但是我无法访问它们 –

回答

0

如果nr_of_prices属于PL,这将增加一个动态对象:

int oldidx = root->nr_of_prices++; 
root->pl = realloc(root->pl, root->nr_of_prices * sizeof(*root->pl)); 
root->pl[oldidx] = malloc(sizeof(pricing)); 
root->pl[oldidx]->price = price; 
root->pl[oldidx]->shopname = shop;