gpt4 book ai didi

c - 如何从 POSIX 二叉树(tsearch)中删除所有节点?

转载 作者:太空狗 更新时间:2023-10-29 15:34:50 25 4
gpt4 key购买 nike

我看到访问所有节点(如果 key 未知)的唯一方法是twalk。是否允许在 twalk 中使用 tdelete?如果不是——如何删除所有节点? (我不想使用不可移植的 GNU 扩展 tdestroy。)

最佳答案

不,你不需要使用twalk,你可以使用带有比较功能的tdelete(与插入相同的功能),tdelete 更改根节点,因此传递和删除 while (root != NULL) 将达到目的,类似于:

typedef struct {
int key;
char value[50];
} t_data;

static int comp(const void *pa, const void *pb)
{
const t_data *a = pa, *b = pb;

if (a->key > b->key) return +1;
if (a->key < b->key) return -1;
return 0;
}

int main(void)
{
void *root = NULL;
t_data *data;

...

while (root != NULL) {
data = *(t_data **)root;
tdelete(data, &root, comp);
free(data);
}

...

关于c - 如何从 POSIX 二叉树(tsearch)中删除所有节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39569621/

25 4 0
文章推荐: html - 使用 CSS3 制作按钮弹跳
文章推荐: android - 在 Android 应用程序中单击图像导航到新 Activity
文章推荐: html - 为什么有人想要将表单元素包装在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com