Пример #1
0
void FreeBST(goods *product)
{
        if(product == NULL)
        {
                return;
        }
        FreeBST(product->left);
        FreeBST(product->right);
        free(product);
}
Пример #2
0
void FreeSymbolTable(symtabADT table)
{
    FreeBST(table->bst, FreeEntry);
    FreeBlock(table);
}
Пример #3
0
int main()
{
        goods *root = NULL;//pointer to the root product of the tree
        goods **prev;
        goods *product;
        goods *search;
        //pointers for freeing memory
        goods *delete1;
        goods *delete2;
        int value;//star location
        int q;

        for(q = 0; q < 4; q++)
        {
                //save some products in memory
                product = NULL;
                product = malloc(sizeof(struct goods));
                if(product != NULL)
                {
                        if(q == 0)
                        {
                                strcpy(product->product_name, "APPLES");
                                product->code = 852;
                                product->price = 1.25;
                                product->supply = 30;
                        }
                        if(q == 1)
                        {
                                strcpy(product->product_name, "MILK");
                                product->code = 123;
                                product->price = 2;
                                product->supply = 30;
                        }
                        if(q == 2)
                        {
                                strcpy(product->product_name, "JUICE");
                                product->code = 121;
                                product->price = 2.39;
                                product->supply = 30;
                        }
                        if(q == 3)
                        {
                                strcpy(product->product_name, "CHOCOLATE");
                                product->code = 567;
                                product->price = 1.5;
                                product->supply = 30;
                        }
                        product->left = NULL;
                        product->right = NULL;
                        
                        prev = &root;
                        search = root;
                        while(search != NULL)
                        {
                                if(search->code < product->code)
                                {
                                        prev = &search->right;
                                        search = search->right;
                                }
                                else if(search->code > product->code)
                                {
                                        prev = &search->left;
                                        search = search->left;
                                }
                        }
                        *prev = product;
                }
                else
                {
                        printf("Not enough memory to start program!");
                        getch();
                        goto out;
                }
        }

        do
        {
                value = Menu();
                //turn on cursor
                SetCursorType(NORMAL_CURSOR);
                switch(value)
                {
                        case 0: EnterProd(&root);
                                break;
                        case 1: DeleteProd(&root);
                                break;
                        case 2: FindProd(&root);
                                break;
                        case 3: SellProd(&root);
                                break;
                        case 4: DisplayProd(&root);
                                break;
                        case 5: LoadProd(&root);
                                break;
                        case 6: SaveProd(&root);
                                break;
                        case 7: CheckSave(z, &root);
                                break;
                }
        }while(value != 7);

        out:;
        //free allocated memory for all products with a help of recursion
        FreeBST(root);
        root = NULL;

        return 0;
}