首页 > 解决方案 > 如何在 c 编程中删除在以下结构中具有成员函数的结构?

问题描述

我能够创建下面的所有功能并执行所有操作,但我无法删除这棵树,所以请有人帮我如何删除这种类型的结构

typedef struct Tree
{

Node *root;

Data *(*insert)(struct Tree *, Data);

Data *(*search)(struct Tree *bst, Data value);

void (*sort)(struct Tree *, Data *);

int (*compare)(struct Tree *t, struct Tree *copy);

struct Tree * (*clone)(struct Tree *t);

void (*delete)(struct Tree * bst);

void (*removeData)(struct Tree * bst, Data value);
}Tree;

树实例如下

Tree *newTree()
{

    Tree *bsttemp = (Tree *)malloc(sizeof(Tree));

    bsttemp->root = NULL;

    bsttemp->insert = &insert;

    bsttemp->search = &search;

    bsttemp->sort = &sort;

    bsttemp->compare = &compare;

    bsttemp->clone = &clone;

  //  bsttemp->delete = &delete;

    bsttemp->removeData = &removeData;

    return bsttemp;
}

标签: cstructbinary-treebinary-search-tree

解决方案


看起来你试图在 C 中模拟类......

无论如何,

Tree *bsttemp = (Tree *)malloc(sizeof(Tree));

谁得到 bsttemp 指针(你的 newTree() 函数的调用者)可以简单地在那个指针上调用 free() 。

顺便说一句,不要强制转换 malloc()。这是不必要的,并且可以隐藏 C99 之前版本的 C 中的错误。


推荐阅读