gpt4 book ai didi

c - 二叉树 : user decides whether it should be a number tree or a word tree in c programming

转载 作者:行者123 更新时间:2023-11-30 14:21:12 24 4
gpt4 key购买 nike

在我的作业中,我必须创建一个二叉树,用户在其中输入详细信息。

如果用户想要创建数字树,用户要做的第一件事是输入 1;如果想要创建单词树,则输入 2。

他们选择的树类型就是程序运行期间的类型。

必须编写许多函数(和一些结构)才能完成作业。

我的问题是如何编写适用于 int 和 char 的通用函数?

例如,如果它是一棵数字树,那么节点的结构将包括: int 键; list_t* 值列表; 节点*左; 节点*右;

但如果它是一个单词列表,那么结构看起来是一样的,除了不是 int 键,而是 char 键。

预先感谢您的帮助!

最佳答案

您可以采取的方法是将结构中的数据定义为 union ,如下所示:

struct _Node
{
...
union
{
char* c;
int i;
} data;
};

当用户做出选择时,根据它访问正确的 union 成员。

编辑

因此,假设用户选择了一种类型,例如 int。并且您希望将新值插入到树中。 (为了简洁起见,我将省略错误检查,但请记住检查内存分配是否成功)。

struct _Node* newElem = allocNode();

if (get_user_elected_type() == INT)
newElem->data.i = user_input.i; // Your methods will also need to accept a union

这种方式有严重的缺点(例如,添加新类型并不容易)。最重要的是,它展示了 C 语言中的泛型编程是多么令人讨厌。(使用 void* 最终也会变得同样令人讨厌)。

关于c - 二叉树 : user decides whether it should be a number tree or a word tree in c programming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14873233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com