में 'बहुउद्देश्यीय' लिंक्ड सूची कार्यान्वयन यह वास्तव में एक तकनीकी प्रश्न नहीं है, क्योंकि मुझे पता है कि मुझे उन चीजों को करने के लिए पर्याप्त प्रकार की आवश्यकता है (मेरा मतलब है कि 'भाषा को आपके रास्ते में आने देना '), तो यह सवाल मूल रूप से' क्या दिशा लेने के लिए 'सवाल है।शुद्ध सी
स्थिति यह है: मैं वर्तमान में एक उन्नत एल्गोरिदम कोर्स ले रहा हूं, और 'प्रोग्रामर के रूप में बढ़ने' के लिए, मुझे व्यावहारिक असाइनमेंट को लागू करने के लिए शुद्ध सी का उपयोग करना आवश्यक है (यह अच्छी तरह से काम करता है: बहुत अधिक गलती आप इसे वास्तव में समझने के लिए मजबूर करते हैं कि आप इसे ठीक करने के लिए क्या कर रहे हैं)। कार्यान्वयन के दौरान, मैं स्पष्ट रूप से ग्राउंड अप से 'मूल' डेटा संरचनाओं को लागू करने की समस्या में भाग लेता हूं: वास्तव में न केवल लिंक्ड सूचियां, बल्कि ढेर, पेड़, और कैटर।
मैं इस विषय में सूचियों पर ध्यान केंद्रित कर रहा हूं क्योंकि यह आमतौर पर एक संरचना है जिसे मैं प्रोग्राम में बहुत अधिक उपयोग करता हूं, या तो 'मुख्य' संरचना के रूप में या अन्य बड़े लोगों के लिए 'सहायक' संरचना के रूप में (उदाहरण के लिए, हैश पेड़ जो एक लिंक्ड सूची का उपयोग करके संघर्ष का समाधान करता है)।
यह आवश्यक है कि सूची विभिन्न प्रकार के तत्वों को संग्रहित करे। मैं यहां एक आधार के रूप में मान रहा हूं कि मैं प्रत्येक प्रकार के लिए सूची को दोबारा कोड नहीं करना चाहता हूं।
- एक (थोड़े असजीला; डिबग करने के लिए कठिन) शून्य संकेत की सूची बनाना
- केवल एक सूची बनाना, लेकिन 'तत्व प्रकार' के रूप में एक संघ होने,: तो, मैं इन विकल्पों के साथ आ सकते हैं जिसमें सभी तत्व प्रकार शामिल हैं, मैं प्रोग्राम में उपयोग करूंगा (डीबग करने में आसान; तत्वों का आकार समान नहीं है)
- SGLIB की शैली में प्रत्येक प्रकार के कोड को पुन: उत्पन्न करने के लिए प्रीप्रोसेसर मैक्रो का उपयोग करके, 'अनुकरण' सी ++ एसटीएल (रचनात्मक समाधान; अंतरिक्ष बर्बाद नहीं करता है; तत्वों के पास स्पष्ट प्रकार होता है जब वे वापस आते हैं; कोई भी परिवर्तन I n सूची कोड वास्तव में नाटकीय हो सकता है)
- आपका विचार/समाधान
सवाल स्पष्ट करने के लिए: जो ऊपर से एक सबसे अच्छा है?
पीएस: चूंकि मैं मूल रूप से अकादमिक संदर्भ में हूं, इसलिए मैं उद्योग में शुद्ध सी के साथ काम करने वाले लोगों के विचार में भी रूचि रखता हूं। मैं समझता हूं कि अधिकांश शुद्ध सी प्रोग्रामर एम्बेडेड डिवाइस क्षेत्र में हैं, जहां मुझे नहीं लगता कि इस तरह की समस्या का सामना करना आम है। हालांकि, अगर वहां कोई भी जानता है कि यह 'असली दुनिया में' कैसे किया जाता है, तो मुझे आपकी राय में बहुत दिलचस्पी होगी।
क्यों शून्य संकेत यह डिबग करने के लिए कड़ी मेहनत कर सकता हूँ? यह सभ्य अभिव्यक्ति मूल्यांकन के साथ किसी भी प्रकार के डीबगर में छोटा है। –
यह वास्तव में है, और आप अभी इस बारे में सोचने के लिए आते हैं। मेरे पिछले एल्गोरिदम प्रोफेसर ने इस प्रतिरोध को हमारे ऊपर शून्य पॉइंटर्स के लिए मजबूर कर दिया। लेकिन यह अभी भी कोड को पढ़ने से समझने में थोड़ा मुश्किल बनाता है। –
ठीक है, आपको * शून्य से बचाना चाहिए * जहां भी भाषा ऐसा करने के लिए सुविधाएं प्रदान करती है ... लेकिन यदि आप सी में बहुरूपता चाहते हैं ... – dmckee