【发布时间】:2013-06-08 18:56:47
【问题描述】:
我目前正在构建一个数据结构的个人库,我意识到它们可以通过将其中的数据完全抽象为 void *.所以假设我创建了一个链表
typedef struct node_ll {
void *data;
struct node_ll *next;
} node_ll;
假设我正在创建一个结构链接列表,它们被定义为
struct person {
char *name;
int age;
};
那么,是否可以定义一个抽象的搜索方法
void *traverse(void *head, void* data) {}
要找到一个 19 岁且名叫“约翰”的人?
【问题讨论】:
-
有可能,但很容易出错。看看stackoverflow.com/a/351756/1944441,说的书不好理解。
-
也可以传递一个函数指针来处理
void *指向的数据类型。 -
这是可能的,但是你失去了类型安全性。你最好远离 C 并查看 C++ 的标准模板库,甚至更好地在 Haskell 中启动程序。
-
@BryanOlivier 你可以让它打字安全。
-
@Armin 可能,但您是否同意其他建议;)?
标签: c data-structures linked-list traversal abstraction