嘿,我正試圖開始我的CS作業(第二年C論文)。將兩個單獨的ADT合併爲一個
在本課程中,我們創建了一個二進制搜索樹ADT和一個紅黑樹ADT。我們必須將它們組合成一個更一般的「樹」ADT,它將根據用戶輸入選擇是紅黑樹還是二元搜索樹。
我已經開始定義一個新的枚舉類型; treetype_t可以設置爲RBT或BST ...我的第一個問題是我如何聲明結構,因爲我不知道哪個ADT將被選中?例如在我bst.c文件我有:
struct bstnode {
char *key;
bst left;
bst right;
};
,在我的彩鈴文件我有:
struct rbtnode {
char *key;
colour_t colour;
rbt left;
rbt right;
};
我的第一個想法是有一個if語句,如
if (treetype_t == RBT){
struct rbtnode {
char *key;
colour_t colour;
rbt left;
rbt right;
};
}
else{
struct bstnode {
char *key;
bst left;
bst right;
};
}
然而我不認爲這會起作用......我想不出另一種方法 - 任何想法?