2012-12-18 23 views
7

我是一名编程初学者,请在我身上轻松一下,我很难找到我的问题的答案。我无法理解复杂的代码。有人可以用简单的代码解释我如何generic list manipulation function written which accepts elements of any kind?在此先感谢。如何编写泛型列表操作函数?

+1

C不是泛型编程遗憾的是 – Pubby

+0

这[图书](一个非常好的语言http://www.cs.rit.edu/ 〜ats/books/ooc.pdf)可能对你有帮助,也可以[代码](http://www.linuxcandy.com/2011/11/week-4-introduction-to-generic.html) –

+1

@GrijeshChauhan谢谢你非常感谢 – Korhan

回答

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; 
    }; 

使用上述结构,可以存储不同类型的数据。 根据数据类型使用函数指针进行比较函数或调用不同的函数。

+1

。为你的时间+1。 – Korhan

1

这通常使用空指针来完成:

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); 
+0

谢谢。为你的时间+1。 – Korhan