Я реализовал красное черное дерево в 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. And C очень хорошо ** имеет ** операторы сравнения. Чтобы узнать C, прочитайте книгу C, а не книгу C++ или роман. Если у вас есть ** конкретная проблема с вашим кодом C, четко укажите это и укажите [mcve]. – Olaf