c - 指向嵌套结构指针的指针

标签 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;

最佳答案

如果 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;

关于c - 指向嵌套结构指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698489/

相关文章:

c - libX11 : XPutImage first call

带有嵌套 If 语句的 Javascript 随机数

c++ - 如何在结构的方法之一中将结构成员作为默认参数传递?

sorting - 如何同时按父字段和嵌套字段对 Elasticsearch 进行排序?

将 C 结构转换为 unsigned char

c - 如何使用指针更改双链表中的2个节点? C

c - 更新结构数组值后值保持不变

c - sk_buff 如何指向 sk_buff_head

c - 如何调试异常的 C 内存/堆栈问题

mysql - 帮助 MySQL 中的嵌套查询