Так что у меня возникли проблемы с определением, как это преодолеть.
Возьмите, к примеру, у меня есть реализация красного черного дерева, которая работает с элементами:
typedef unsigned long int Key;
struct rbt_node{
Item item;
int color;
Key key;
struct rbt_node* parent;
struct rbt_node* left;
struct rbt_node* right;
};
, затем в элементе.hi определите структуру, которую я буду использовать, например:
typedef struct _something* Item;
Таким образом, я отделяю Предмет, содержащийся в реализации дерева.Проблема возникает, если я хочу повторно использовать ADT для других типов.
В данный момент мне нужно будет определить Item2.h и скопировать rbt.c / rbt.h в rbt2.c / rbt2.hи измените их, чтобы использовать Item2.h и измените имена функций.Разве нет более чистого способа?
Я нашел этот C двойной связанный список с абстрактным типом данных , но, похоже, есть некоторые проблемы в зависимости от архитектуры и размера структур, которыеЯ не очень хорошо осведомлен.
Я ищу такой способ использования:
rbt_insert(rbt_of_something, something);<br>
rbt_insert(rbt_of_somethingElse, somethingElse);
Спасибо