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

C++ का उपयोग करके दी गई सिंगल लिंक्ड लिस्ट से एक टेल नोड को डिलीट करें

एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें नोड्स होते हैं और प्रत्येक नोड में दो फ़ील्ड होते हैं; एक डाला जाने वाला मान या डेटा है और दूसरा फ़ील्ड अगले नोड का पता संग्रहीत करता है।

यहां हमारा काम एक लिंक्ड लिस्ट के अंत से एक नोड को हटाना है। अंतिम नोड को टेल नोड के रूप में जाना जाता है। यदि लिंक की गई सूची में कोई नोड नहीं है, तो NULL लौटाएं।

उदाहरण के लिए -

इनपुट 1 − 1 → 2 → 3 → 4 → 5

आउटपुट − 1 → 2 → 3 → 4 →

स्पष्टीकरण - दी गई सिंगल लिंक्ड लिस्ट में, अंत से नोड '5' है। अंतिम नोड को हटाने के बाद, आउटपुट होगा, 1 → 2 → 3 → 4 →।

इनपुट 2 -5 → 8 →3

आउटपुट -5 → 8 →

स्पष्टीकरण - दी गई सिंगल लिंक्ड लिस्ट में, अंत से नोड '3' है। नोड को अंत से हटाने के बाद, आउटपुट 5 →8 → होगा।

इस समस्या को हल करने का तरीका

इस विशेष समस्या को हल करने का सरल तरीका एक पिछला नोड बनाना है जो बाद में वर्तमान नोड के मूल्य को संग्रहीत करता है जब वर्तमान पॉइंटर लिंक की गई सूची के अंतिम नोड को इंगित करेगा।

यदि वर्तमान नोड अंतिम नोड की ओर इशारा करता है, तो लिंक की गई सूची के सभी नोड्स पर पुनरावृति करें। और अंत में, लिंक की गई सूची से वापस लौटें।

  • लिंक की गई सूची को इसमें नोड्स डालकर प्रारंभ करें।

  • फ़ंक्शन insertAtFirst(node*&head, int data) लिंक की गई सूची में सभी नोड्स सम्मिलित करेगा।

  • एक फ़ंक्शन deleteAtTail(node*head) एक पॉइंटर लेता है जो वर्तमान में हेड की ओर इशारा कर रहा है।

  • पिछला नोड पॉइंटर बनाएं और इसे NULL के रूप में प्रारंभ करें।

  • एक अस्थायी नोड पॉइंटर बनाएं जो वर्तमान में पॉइंटर के शीर्ष की ओर इशारा कर रहा हो।

  • अस्थायी सूचक को तब तक पार करें जब तक कि वह लिंक की गई सूची के अंत तक न पहुंच जाए।

  • अस्थायी पॉइंटर के मान को पिछले नोड पॉइंटर में स्टोर करें।

  • अस्थायी सूचक हटाएं।

  • लिंक की गई सूची लौटाएं।

उदाहरण

#include<iostream>
using namespace std;
class node{
   public:
   int data;
   node*next;
   node(int d){
      data=d;
      node*next= NULL;
   }
};
void insertAtFirst(node*&head, int data){
   node*n= new node(data);
   n->next= head;
   head=n;
}
void printNode(node*head){
   while(head!=NULL){
      cout<<head->data<<"->";
      head=head->next;
   }
   cout<<endl;
}
void deleteatTail(node*head){
   node*prev= NULL;
   node*temp= head;
   while(temp->next!=NULL){
      prev= temp;
      temp=temp->next;
   }
   delete temp;
   prev->next= NULL;
   return;
}
int main(){
   node*head= NULL;
   insertAtFirst(head,5);
   insertAtFirst(head,4);
   insertAtFirst(head,3);
   insertAtFirst(head,2);
   insertAtFirst(head,1);
   deleteatTail(head);
   printNode(head);
}

आउटपुट

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

1→2→3→4→

दी गई इनपुट सिंगल लिंक्ड लिस्ट में, 1 → 2 → 3 → 4 → 5, लिंक्ड लिस्ट का आखिरी नोड '5' है। इसलिए, अंतिम नोड को हटाने के बाद, लिंक की गई सूची 1 → 2 → 3 → 4 → बन जाएगी।


  1. C++ में किसी दिए गए स्थान पर एक लिंक्ड सूची नोड हटाएं

    इस ट्यूटोरियल में, हम सीखेंगे कि दी गई स्थिति के साथ सिंगल लिंक्ड लिस्ट में नोड को कैसे डिलीट किया जाए। आइए समस्या को हल करने के लिए चरणों को देखें। डेटा और अगले पॉइंटर के साथ स्ट्रक्चर लिखें। नोड को सिंगल लिंक्ड लिस्ट में डालने के लिए एक फंक्शन लिखें। डमी डेटा के साथ सिंगल लिंक्ड लिस्ट को

  1. C++ में किसी दिए गए स्थान पर एक डबल लिंक्ड लिस्ट नोड को डिलीट करें

    इस ट्यूटोरियल में, हम सीखेंगे कि दी गई स्थिति के साथ डबल लिंक्ड लिस्ट में नोड को कैसे हटाया जाए। आइए समस्या को हल करने के लिए चरणों को देखें। डेटा, पिछले और अगले पॉइंटर्स के साथ स्ट्रक्चर लिखें। डबल लिंक की गई सूची में नोड डालने के लिए एक फ़ंक्शन लिखें। डमी डेटा के साथ डबल लिंक्ड लिस्ट को

  1. सर्कुलर सिंगल लिंक्ड लिस्ट को लागू करने के लिए C++ प्रोग्राम

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