एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें कई नोड्स होते हैं जो एक दूसरे से जुड़े होते हैं। प्रत्येक नोड में दो फ़ील्ड होते हैं - डेटा फ़ील्ड और अगले नोड का पता।
आइए मान लें कि हमारे पास एक एकल लिंक की गई सूची है और हमें इस लिंक की गई सूची से पहले नोड को हटाना होगा। उदाहरण के लिए,
इनपुट 1 -4 → 3 → 2 → 1
आउटपुट -3 → 2 → 1 →
स्पष्टीकरण - '4' दी गई सिंगल लिंक्ड लिस्ट में पहला नोड है। पहला नोड हटाने के बाद, लिंक की गई सूची 3→2→1 हो जाएगी।
इनपुट 2 − 1 → 2 → 3 →
आउटपुट − 2 → 3 →
स्पष्टीकरण - पहले नोड '1' को हटाने के बाद, लिंक की गई सूची 2 → 3 होगी।
इस समस्या को हल करने का तरीका
प्रारंभ में, हमारे पास एक लिंक्ड सूची है जिसमें नोड्स होते हैं। प्रत्येक नोड में अगले नोड का डेटा और पता होता है। लिंक की गई सूची में डेटा डालने के बाद, हम पहले नोड को हटाने के लिए एक फ़ंक्शन बनाएंगे।
इस प्रकार, हम एक अस्थायी पॉइंटर बनाएंगे जो शुरू में सिर की ओर इशारा करता है और सिर को अगले नोड पर ले जाता है। अब अस्थायी नोड हटाएं और लिंक की गई सूची लौटाएं।
-
एक फ़ंक्शन deleteAthead(node*&head) पॉइंटर को सिर पर ले जाता है और लिंक की गई सूची के पहले नोड को हटा देता है।
-
एक अस्थायी पॉइंटर बनाएं जो शुरू में सिर की ओर इशारा करे।
-
सिर अगले नोड पर चला जाता है।
-
अस्थायी सूचक हटाएं।
-
लिंक की गई सूची लौटाएं।
उदाहरण
#include<iostream> using namespace std; int main(){ class node{ public: int data; node*next; node(int d){ data=d; node*next=NULL; } }; void insertAtFirstNode(node*&head, int data){ node*n= new node(data); n->next= head; head=n; } void print(node*head){ while(head!=NULL){ cout<<head->data<<"->"; head=head->next; } cout<<endl; } void deleteAtFirst(node*&head){ if(head==NULL){ return; } node*temp=head; head= head->next; delete temp; return; } int main(){ node*head= NULL; insertAtFirstNode(head,1); insertAtFirstNode(head,2); insertAtFirstNode(head,3); insertAtFirstNode(head,4); deleteAtFirst(head); print(head); }
आउटपुट
उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,
3 → 2 → 1 →
चूंकि दी गई एकल लिंक की गई सूची 4 → 3 → 2 → 1 → है, पहले नोड को हटाने के बाद जो 4 है, लिंक की गई सूची बन जाएगी, 3 → 2 → 1 →