我定义了一个简单的 C API,它管理具有数据类型的双向链表,在头文件中定义,并附带其功能(例如:print_data、compare 等)。
这样我就很容易将它轻松地用于我需要的任何项目中。
但是,如果我想将此 ADT用于同一个项目但使用不同的数据怎么办?
ADT 在其头文件中定义如下:
typedef struct DoublyLinkedList_ADT *dllistptr;
在它的源文件中有这两个结构:
struct DoublyLinkedListNode
{
dllnodeptr previous, next;
Data data;
};
struct DoublyLinkedList_ADT
{
dllnodeptr head, tail;
int size;
};
在数据头文件中是这样的:
typedef struct Data_type
{
int num;
}Data;
这样我就可以将数据定义为我想要的任何东西。
有什么办法可以做到这一点?
我想出的唯一方法是复制粘贴代码,将“_OtherData”添加到所有“数据”引用。但这听起来不太好。
在阅读了其他一些问题之后,我发现有一个实现需要void*
定义 Data 并且每次使用它时,我都必须转换为正确的数据类型。
有什么更容易/更快的吗?