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

C भाषा में लिंक्ड लिस्ट में हेड और टेल एलिमेंट डिलीशन लॉजिक

लिंक्ड लिस्ट डायनामिक मेमोरी आवंटन का उपयोग करती हैं यानी वे तदनुसार बढ़ती और सिकुड़ती हैं। यह नोड्स का संग्रह है।

नोड के दो भाग होते हैं: डेटा और लिंक। ये नीचे समझाए गए हैं।

लिंक्ड लिस्ट पर ऑपरेशन्स

लिंक्ड लिस्ट पर तीन प्रकार के ऑपरेशन्स होते हैं:

  • इन्सर्शन
  • डिलीशन
  • ट्रैवर्सिंग

डिलीशन

  • नोड की पहचान करें।
  • लिंक्स को इस तरह एडजस्ट करें कि नोड्स का डी-आवंटन लिस्ट को अनकनेक्टेड कंपोनेंट्स न बनाए।
  • डिलीट करने के लिए एलिमेंट वापस/डिस्प्ले करें।
  • मेमोरी डी-आवंटित करें।

हेड एलिमेंट डिलीट करें

C प्रोग्रामिंग भाषा में हेड एलिमेंट डिलीट करने के लिए नीचे दिए गए चरणों का पालन करें:

1. void del_head()
2. {
3. int x;
    Node *temp;
4. if(Head == NULL)
5. {
6. printf("लिस्ट खाली है");
7. return;
8. }
9. x = Head->ele;
10. temp = Head;
11. if(Head == Tail)
    Head = Tail = NULL;
12. Else
    Head = Head->next;
13. printf("डिलीट किया गया एलिमेंट %d", x);
14. free(temp);
15. }

यहां,

  • चरण 4 - लिस्ट खाली है या नहीं जांचता है।
  • चरण 9 - डिलीट करने के लिए एलिमेंट पढ़ता है।
  • चरण 10 - हेड को टेम्प पॉइंटर द्वारा रेफर किया जाता है।
  • चरण 11 - लास्ट डिलीशन के लिए जांचता है।
  • चरण 12 - हेड पॉइंटर को लिस्ट में अगले एलिमेंट पर ले जाता है।
  • चरण 13 - डिलीट करने के लिए एलिमेंट डिस्प्ले करता है।
  • चरण 14 - मेमोरी डी-आवंटित करता है।

टेल एलिमेंट डिलीट करें

C प्रोग्रामिंग भाषा में टेल एलिमेंट डिलीट करने के लिए नीचे दिए गए चरणों का पालन करें:

1. void del_tail()
2. {
3. int x;
4. Node *temp;
5. if(Head == NULL)
6. {
7. printf("लिस्ट खाली है");
8. return;
9. }
10. temp = Head;
11. while(temp->next != Tail)
    temp = temp->next;
12. x = Tail->ele;
13. Tail = temp;
14. Temp = temp->next
15. Tail->next = NULL;
16. printf("डिलीट किया गया एलिमेंट %d", x);
17. free(temp);
18. }

यहां,

  • चरण 5 - लिस्ट खाली है या नहीं जांचता है।
  • चरण 10, 11, 12 - टेम्प पॉइंटर को लिस्ट के लास्ट बट वन नोड पर ले जाता है।
  • चरण 13 - डिलीट करने के लिए टेल एलिमेंट पढ़ता है।
  • चरण 14 - टेल पॉइंटर को लास्ट बट वन नोड पर ले जाता है।
  • चरण 15 - टेम्प पॉइंटर को लिस्ट के लास्ट नोड पर ले जाता है।
  • चरण 16 - टेल नोड से टेम्प नोड का रेफरेंस हटाता है।
  • चरण 17 - डिलीट करने के लिए एलिमेंट्स डिस्प्ले करता है।
  • चरण 18 - मेमोरी डी-आवंटित करता है।
  1. C भाषा में लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करना (इटरेटिव मेथड) C भाषा में लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करना (इटरेटिव मेथड)

    इस समस्या में, प्रोग्राम को दी गई लिंक्ड लिस्ट से वैकल्पिक नोड्स प्रिंट करने होंगे यानी एक छोड़कर एक प्रिंट करना, इटरेटिव मेथड का उपयोग करके। इटरेटिव मेथड वह है जो आमतौर पर लूप का उपयोग करता है जो तब तक निष्पादित होता है जब तक कंडीशन का मान 1 या सत्य रहता है। मान लें, लिस्ट में नोड्स 29, 34, 43,

  1. C भाषा में लिंक्ड लिस्ट को वास्तव में रिवर्स किए बिना रिवर्स प्रिंट करना C भाषा में लिंक्ड लिस्ट को वास्तव में रिवर्स किए बिना रिवर्स प्रिंट करना

    कार्य दिए गए लिंक्ड लिस्ट के रिवर्स को रिकर्सिव फंक्शन का उपयोग करके प्रिंट करना है। प्रोग्राम को रिवर्स प्रिंट करना होगा लेकिन लिस्ट को रिवर्स नहीं करना होगा यानी नोड्स का क्रम समान रहेगा। यहां, प्रोग्राम पहले नोड का एड्रेस रखने वाले हेड पॉइंटर को अगले नोड पर तब तक ले जाएगा जब तक NULL की जांच नही

  1. C प्रोग्राम में अतिरिक्त स्पेस और संशोधन के बिना लिंक्ड लिस्ट का रिवर्स प्रिंट करें C प्रोग्राम में अतिरिक्त स्पेस और संशोधन के बिना लिंक्ड लिस्ट का रिवर्स प्रिंट करें

    समस्या विवरण कार्य लिंक्ड लिस्ट के अंत से शुरू होने वाले नोड्स को प्रिंट करना है बिना अतिरिक्त स्पेस का उपयोग किए, जिसका अर्थ है कि कोई अतिरिक्त वेरिएबल नहीं होना चाहिए, इसके बजाय हेड पॉइंटर जो पहले नोड को इंगित करता है, को स्थानांतरित किया जाएगा। उदाहरण इनपुट: 10 21 33 42 89 आउटपुट: 89 42 33 21 1