2012-12-18 58 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