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 :(得分: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;