Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में लिंक्ड लिस्ट की अवधारणा


लिंक्ड लिस्ट समझने से पहले, आइए C प्रोग्रामिंग भाषा में एरे के नुकसान और पॉइंटर्स के फायदों के बारे में जानें।

एरे के नुकसान

  • इसमें स्टेटिक मेमोरी एलोकेशन शामिल है।
  • एरे में मेमोरी की बर्बादी हो सकती है।
  • मेमोरी की कमी एरे का एक महत्वपूर्ण नुकसान है।

पॉइंटर्स के फायदे

  • इसमें डायनामिक मेमोरी एलोकेशन शामिल है।
  • पॉइंटर्स में मेमोरी का प्रभावी उपयोग किया जा सकता है।

लिंक्ड लिस्ट

लिंक्ड लिस्ट डायनामिक मेमोरी एलोकेशन का उपयोग करती हैं यानी वे आवश्यकतानुसार बढ़ती और सिकुड़ती हैं। इन्हें नोड्स के संग्रह के रूप में परिभाषित किया जाता है। यहां, नोड्स के दो भाग होते हैं: डेटा और लिंक। डेटा, लिंक और लिंक्ड लिस्ट का प्रतिनिधित्व नीचे दिया गया है:

C भाषा में लिंक्ड लिस्ट की अवधारणा

लिंक्ड लिस्ट के प्रकार

लिंक्ड लिस्ट के चार प्रकार होते हैं:

  • सिंगल / सिंगली लिंक्ड लिस्ट
  • डबल / डबली लिंक्ड लिस्ट
  • सर्कुलर सिंगल लिंक्ड लिस्ट
  • सर्कुलर डबल लिंक्ड लिस्ट

सिंगल लिंक्ड लिस्ट

नीचे दिए गए प्रतिनिधित्व को देखें:

C भाषा में लिंक्ड लिस्ट की अवधारणा

नोड में दो भाग होते हैं:

  • डेटा
  • लिंक

लिंक फील्ड हमेशा लिस्ट में अगले नोड की ओर इशारा करता है।

अंतिम नोड का लिंक फील्ड NULL होता है।

डबल लिंक्ड लिस्ट

नीचे दिए गए प्रतिनिधित्व को देखें:

C भाषा में लिंक्ड लिस्ट की अवधारणा

नोड में तीन भाग होते हैं:

  • डेटा भाग
  • लेफ्ट लिंक
  • राइट लिंक

लेफ्ट लिंक हमेशा लिस्ट में बाएं नोड की ओर इशारा करता है और राइट लिंक हमेशा दाएं नोड की ओर इशारा करता है।

पहले नोड का लेफ्ट लिंक और अंतिम नोड का राइट लिंक NULL होना चाहिए।

सर्कुलर सिंगल लिंक्ड लिस्ट

नीचे दिए गए प्रतिनिधित्व को देखें:

C भाषा में लिंक्ड लिस्ट की अवधारणा

नोड में दो भाग होते हैं:

  • डेटा भाग
  • लिंक भाग

लिंक फील्ड हमेशा लिस्ट में अगले नोड की ओर इशारा करता है।

अंतिम नोड का लिंक भाग हमेशा पहले नोड की ओर इशारा करता है।

सर्कुलर डबल लिंक्ड लिस्ट

नीचे दिए गए प्रतिनिधित्व को देखें:

C भाषा में लिंक्ड लिस्ट की अवधारणा

नोड में तीन भाग होते हैं:

  • डेटा भाग
  • लेफ्ट लिंक
  • राइट लिंक

लेफ्ट लिंक हमेशा लिस्ट में बाएं नोड की ओर इशारा करता है और राइट लिंक दाएं नोड की ओर इशारा करता है।

पहले नोड का लेफ्ट लिंक अंतिम नोड की ओर इशारा करता है और अंतिम नोड का राइट लिंक पहले नोड की ओर इशारा करता है।


  1. सिंगली लिंक्ड लिस्ट के नोड्स का गुणनफल सिंगली लिंक्ड लिस्ट के नोड्स का गुणनफल

    दिए गए n नोड्स के साथ, कार्य सिंगली लिंक्ड लिस्ट के सभी नोड्स का गुणनफल प्रिंट करना है। प्रोग्राम को प्रारंभिक नोड से शुरू करके सिंगली लिंक्ड लिस्ट के सभी नोड्स को तब तक पार करना होगा जब तक NULL नहीं मिल जाता। उदाहरण इनपुट: 1 2 3 4 5 6 आउटपुट: 720 उपरोक्त उदाहरण में, पहले नोड से शुरू करके सभी नोड्

  1. लिंक्ड लिस्ट के वैकल्पिक नोड्स का गुणनफल लिंक्ड लिस्ट के वैकल्पिक नोड्स का गुणनफल

    n नोड्स दिए जाने पर, लिंक्ड लिस्ट में वैकल्पिक नोड्स का गुणनफल प्रिंट करना है। प्रोग्राम को केवल वैकल्पिक नोड्स का गुणनफल प्रिंट करना चाहिए बिना वास्तव में नोड्स के स्थान बदले। उदाहरण इनपुट: 10 20 30 40 50 60 आउटपुट: 15000 उपरोक्त उदाहरण में, पहले नोड से शुरू करके जो 10 है, वैकल्पिक नोड्स 10, 30,

  1. C भाषा में दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स प्रिंट करना C भाषा में दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स प्रिंट करना

    हमें दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स का डेटा प्रिंट करना है। ऐरे के विपरीत लिंक्ड लिस्ट में आमतौर पर इंडेक्स नहीं होते इसलिए हमें पूरी लिंक्ड लिस्ट को ट्रैवर्स करना होगा और जब हम किसी विशेष इंडेक्स पर पहुंचें तो डेटा प्रिंट करना होगा। मान लें, लिस्ट में नोड्स 29, 34, 43, 56 और 88 हैं और इं