2016-08-01 26 views
0

Es gibt zwei Strukturen für BSTZeiger auf Zeiger auf verschachtelte Struktur

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; 

Ich brauche eine Funktion zu machen, und Update-Preis und Geschäftsnamen in BST Knoten hinzufügen können. One Node kann viele Shops und Preise enthalten

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

Ich kann einen einzelnen Shop-Namen und Preis hinzufügen, aber wie mehrere Objekte hinzufügen?

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

Wollen Sie damit sagen, dass Sie einen dynamischen "Array" von Zeigern auf 'pricing' wollen? Dann denke zuerst darüber nach, wie du ein dynamisches Array im Allgemeinen unter Verwendung von z.B. 'malloc' und' realloc'. Dann überlegen Sie, ob Sie wirklich ein Array von Zeigern zu den Strukturen oder nur ein Array von Strukturen benötigen. –

+0

ein Knoten aus dem binären Suchbaum haben ein Array von Strukturen 'Pricing' Ich muss hinzufügen und bearbeiten Strukturen im Knoten, aber ich kann nicht auf sie zugreifen –

Antwort

0

Wenn nr_of_prices zum pl gehört, diese dynamisch ein Objekt hinzufügen wird:

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;