所以我很難找出如何克服這個問題。對其他類型重複使用相同的c ADT
舉個例子,我有一個紅黑樹的實現與項目工作:
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;
};
然後在Item.hi定義我將要使用的結構,例如:
typedef struct _something* Item;
這樣我就可以從樹實現中解耦物品了。如果我想重用其他類型的ADT,則會出現問題。
此刻我將不得不定義一個Item2.h,並將rbt.c/rbt.h複製到rbt2.c/rbt2.h並將它們更改爲使用Item2.h並更改函數名稱。沒有更清潔的方法嗎?
我發現這個C double linked list with abstract data type,但它似乎有一些問題,取決於結構的體系結構和大小,我不是非常瞭解。
我在尋找這種用法:
rbt_insert(rbt_of_something, something);
rbt_insert(rbt_of_somethingElse, somethingElse);
感謝
有了一些頭文件和預處理器,你可以模仿模板。 – leppie 2010-10-28 09:57:13
在與您鏈接的問題的最後一個答案中,找到了關於如何在Linux內核中完成這些操作的鏈接。我認爲這是這類策略的一個很好的解讀。 – 2010-10-28 10:10:10
@Jens Gustedt它看起來很有趣,也是一個非常好的資源,我得看一看。謝謝 – GriffinHeart 2010-11-02 01:23:58