我是编程初学者,请对我放轻松,我发现很难得到我的问题的答案。我无法理解复杂的代码。有人可以用简单的编码解释一下我是如何generic list manipulation function written which accepts elements of any kind?
提前谢谢的。
问问题
1261 次
2 回答
2
这通常使用 void 指针来完成:
typedef struct node {
struct node *next;
void *data;
} node;
node *insert(node *list, void *data) {
}
node *delete(node *list, node *to_delete) {
}
这样的操作函数不依赖于数据的实际类型,因此它们可以通用地实现。例如,您可以为上面的数据字段设置一个数据类型结构:
typedef struct data {
int type;
void *data;
} data;
/* .... */
data d;
d.type = INT;
d.data = malloc(sizeof(int));
node n = {NULL, (void*)&data);
于 2012-12-18T05:59:37.450 回答
1
看起来您需要一个异构列表。下面的一些指针:
将列表节点的数据元素作为一个通用结构,其中包含数据类型和数据的指示符。
/** This should be your data node **/
struct nodedata
{
int datatype;
void *data;
};
/** This should be your list node **/
struct listnode
{
struct nodedata *data;
struct listnode *next;
};
使用上述结构,您可以存储不同类型的数据。使用函数指针进行比较函数或根据数据类型调用不同的函数。
于 2012-12-18T05:58:53.220 回答