【发布时间】:2016-02-17 20:51:21
【问题描述】:
我在 C 中实现了一个红黑树。在 C++ 映射中,可以提供一个自定义比较,它只执行操作 value1
完整的代码不是必需的,因为它与所有其他树实现的代码相同。目前有如下比较功能:
int cmp(void *key1, void *key2){
if(*(int*)key1 < *(int*)key2){
return 1;
}else if(*(int*)key1 > *(int*)key2){
return -1;
}else{
return 0;
}
}
我想要一个这样的比较函数:
int cmp(void *key1, void *key2){
if(*(int*)key1 < *(int*)key2){
return 1;
}else{
return 0;
}
}
我不明白如何使用此比较功能进行搜索,因为找到节点时没有停止条件。
【问题讨论】:
-
“我在 C 中实现了一个红黑树。在 C++ 映射中......” - 那么它是哪种语言? C 和 C++ 是不同的语言!
-
我的目的是查看 C++ stl 库以了解其工作原理。
-
您还可以查看 Python 或 Fortran 库。但这并没有说明如何在 C 中实现它。而且 C 很好地确实具有比较运算符。要学习 C,请阅读 C 书籍,而不是 C++ 书籍或小说。如果您的 C 代码存在特定问题,请明确说明并提供minimal reproducible example。
标签: c algorithm binary-search-tree red-black-tree