2016-08-01 147 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;