Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में रिकर्सिव इंसर्शन और ट्रैवर्सल लिंक्ड लिस्ट

हमें पूर्णांक मान दिए गए हैं जिनका उपयोग एक लिंक्ड सूची बनाने के लिए किया जाएगा। कार्य पहले एक पुनरावर्ती दृष्टिकोण का उपयोग करके एक एकल लिंक की गई सूची को सम्मिलित करना और फिर पार करना है।

अंत में नोड्स का पुनरावर्ती जोड़

  • अगर सिर खाली है → सिर में नोड जोड़ें

  • और सिर में जोड़ें(सिर → अगला)

नोड्स का पुनरावर्ती ट्रैवर्सल

  • अगर सिर खाली है → बाहर निकलें

  • अन्य प्रिंट (सिर → अगला)

उदाहरण

इनपुट − 1 - 2 - 7 - 9 - 10

आउटपुट - लिंक्ड लिस्ट :1 → 2 → 7 → 9 → 10 → NULL

इनपुट -12 - 21 - 17 - 94 - 18

आउटपुट - लिंक्ड लिस्ट :12 → 21 → 17 → 94 → 18 → NULL

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

इस दृष्टिकोण में हम नोड्स को जोड़ने के लिए फ़ंक्शंस का उपयोग करेंगे और सिंगल लिंक्ड लिस्ट को ट्रैवर्स करेंगे और अगले इनपुट के लिए उन्हें रिकर्सिवली कॉल करेंगे।

  • संरचना SLLNode को पूर्णांक और अगले सूचक SLLNode* के साथ लें।

  • फ़ंक्शन addtoEnd(SLLNode* head, int data) सूची के शीर्ष पर पॉइंटर लेता है और डेटा भाग के लिए पूर्णांक और लिंक की गई सूची के अंत में नोड जोड़ता है।

  • यदि हेड पॉइंटर NULL है तो लिस्ट खाली है, अब एक नया नोड जोड़ें और इसे हेड के रूप में सेट करें। सिर जोड़ें → अगला NULL के रूप में। इस नोड पर पॉइंटर लौटाएं

  • यदि सिर शून्य नहीं है तो सिर में नोड जोड़ें → अगला सिर का उपयोग करके-> अगला =addtoEnd (सिर-> अगला, डेटा)।

  • फ़ंक्शन ट्रैवर्सलिस्ट(SLLNode* head) सिर से ट्रैवर्स करना शुरू करता है और प्रत्येक मान को प्रिंट करता है।

  • अगर हेड NULL है तो NULL प्रिंट करें और वापस लौटें।

  • अन्य डेटा मान प्रिंट करें और ट्रैवर्सलिस्ट (हेड-> अगला) का उपयोग करके आगे बढ़ें।

  • AddtoEnd () का उपयोग करके मेन क्रिएट लिस्ट के अंदर और ट्रैवर्सलिस्ट () का उपयोग करके सूची को प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
struct SLLNode {
   int data;
   SLLNode* next;
};
SLLNode* addtoEnd(SLLNode* head, int data){
   if (head == NULL){
      SLLNode *nodex = new SLLNode;
      nodex->data = data;
      nodex->next = NULL;
      return nodex;
   }
   else{
      head->next = addtoEnd(head->next, data);
    }
   return head;
}
void traverseList(SLLNode* head){
   if (head == NULL){
      cout <<"NULL";
      return;
   }
   cout << head->data << " -> ";
   traverseList(head->next);
}
int main(){
   SLLNode* head1 = NULL;
   head1 = addtoEnd(head1, 1);
   head1 = addtoEnd(head1, 8);
   head1 = addtoEnd(head1, 56);
   head1 = addtoEnd(head1, 12);
   head1 = addtoEnd(head1, 34);
   cout<<"Linked List is :"<<endl;
   traverseList(head1);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Linked List is :
1 -> 8 -> 56 -> 12 -> 34 -> NULL

  1. सी ++ में क्रमबद्ध और घुमाए गए लिंक्ड सूची में घूर्णन की गणना करें

    हमें एक लिंक्ड लिस्ट दी गई है। सूची को पहले क्रमबद्ध किया जाता है और फिर K संख्या के नोड्स द्वारा घुमाया जाता है। लक्ष्य K का मान ज्ञात करना है। यदि हमें इनपुट के रूप में लिंक की गई सूची नीचे दी गई है, जिसे K नोड्स की संख्या द्वारा घुमाया जाता है - तब मूल अवश्य रहा होगा - और हम देख सकते हैं K

  1. लिंक्ड सूची सी++ में कूदती है

    मान लीजिए कि हमारे पास एक सिंगल लिंक्ड लिस्ट नोड है जिसमें पॉजिटिव नंबर हैं। हमें वही लिंक्ड सूची ढूंढनी होगी जहां प्रत्येक नोड का अगला बिंदु नोड वैल नोड्स के आगे हो। अगर हमें ऐसा नोड नहीं मिल रहा है, तो अगला शून्य होगा। इसलिए, यदि इनपुट [2,3,10,5,9] जैसा है, तो आउटपुट [2, 3, 15, ] होगा। इसे हल कर

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है। लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं। अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि ह