指向嵌套结构的指针

时间:2016-08-01 12:08:45

标签: c nested structure binary-search-tree

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;

1 个答案:

答案 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;