我有两个功能完全相同,但在两种不同类型的结构中,这两种类型的结构非常相似。
想象一下我有这两个结构。
typedef struct nodeOne{
Date *date;
struct nodeOne *next;
struct nodeOne *prev;
}NodeOne;
typedef struct nodeTwo{
Date *date;
struct nodeTwo *next;
struct nodeTwo *prev;
}NodeTwo;
由于我销毁每个列表的函数几乎相同(只是参数的类型不同),我只想制作一个函数来使两个变薄。
我有这两个功能
void destroyListOne(NodeOne **head, NodeOne **tail){
NodeOne *aux;
while (*head != NULL){
aux = *head;
*head = (*head)->next;
free(aux);
}
*tail = NULL;
}
和这个:
void destroyListTwo(NodeTwo **head, NodeTwo **tail){
NodeTwo *aux;
while (*head != NULL){
aux = *head;
*head = (*head)->next;
free(aux);
}
*tail = NULL;
}
由于它们非常相似,我想制作这样的东西:
void destroyList(void **ini, void **end, int listType){
if (listType == 0) {
NodeOne *aux;
NodeOne head = (NodeOne) ini;
NodeOne tail = (NodeOne) ed;
}
else {
NodeTwo *aux;
NodeTwo head = (NodeTwo) ini;
NodeTwo tail = (NodeTwo) ed;
}
while (*head != NULL){
aux = *head;
*head = (*head)->next;
free(aux);
}
*tail = NULL;
}
正如您现在可能无法正常工作,但我想知道这是否可以实现。
我必须保持这两个结构原样。