我已經在C中實現了一個紅黑樹。在C++映射中,可以提供一個自定義比較,它只執行操作值1 < value2。該操作返回true或false,但如何在沒有比較操作的情況下實現樹?我想讓我的比較函數只返回1或0而沒有任何==運算符。我試圖在stl中讀取它,但是代碼是不可讀的,儘管我有C++的經驗。紅黑樹比較函數
完整的代碼不是必須的,因爲它與其他樹實現的代碼相同。目前有以下比較功能:
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++是**不同的**語言! – Olaf
我的目的是查看C++ stl庫來了解它是如何工作的。 – Gustavo
您還可以查看Python或Fortran庫。但是這並沒有說明如何在C中實現它。而且C很好**有**比較運算符。學習C,閱讀C書,而不是C++書或小說。如果您的C代碼中存在**特定的**問題,請清楚地說明並提供[mcve]。 – Olaf