2012-12-18 8 views
7

मैं प्रोग्रामिंग में शुरुआत कर रहा हूं, कृपया मेरे लिए आसान हो जाएं और मुझे अपने प्रश्न का उत्तर प्राप्त करना मुश्किल हो रहा है। मैं जटिल कोड के चारों ओर अपना सिर नहीं प्राप्त कर सकता। क्या कोई मुझे generic list manipulation function written which accepts elements of any kind? अग्रिम धन्यवाद के बारे में सरल कोडिंग के साथ समझा सकता है।सामान्य सूची मैनिपुलेशन फ़ंक्शन कैसे लिखा जाता है?

+1

सी सामान्य प्रोग्रामिंग दुर्भाग्य – Pubby

+0

यह [पुस्तक] (लिए एक बहुत अच्छा भाषा नहीं है http://www.cs.rit.edu/: उदाहरण के लिए यदि आप उपरोक्त डेटा क्षेत्र के लिए एक डेटा प्रकार struct हो सकता है ~ एटीएस/किताबें/ओओसीपीडीएफ) आपकी मदद कर सकती है, एक [कोड] (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

संबंधित मुद्दे