आइए पहले अपनी लिंक की गई सूची को परिभाषित करें जिसमें डेटा और अगले नोड के लिए पॉइंटर शामिल है।
स्ट्रक्चर नोड {इंट डेटा; स्ट्रक्चर नोड* अगला;};
फिर हम अपना createList(Node ** headPtr, int new_data) फंक्शन बनाते हैं जो नोड के लिए एक डबलपॉइंटर और एक इंट वैल्यू लेता है। फ़ंक्शन के अंदर हम नए बनाए गए नोड को अगला पॉइंटर हेडप्टर और फिर हेडप्टर को नए बनाए गए नोड को असाइन करते हैं।
void createList(Node **headPtr, int new_data){ Node* newNode =new Node(); नया नोड-> डेटा =नया_डेटा; नया नोड-> अगला =(* हेडपीटीआर); (*headPtr) =newNode;}
DeleteNnodesAfterM (नोड * हेड, इंट एम, इंट एन) विधि रूट नोड और एम और एन मान लेती है। अंदर हम सिर को Node* करंट असाइन करते हैं और Node *t.
. भी घोषित करते हैंvoid deleteNnodesAfterM(नोड *हेड, इंट एम, इंट एन) {नोड * करंट =हेड, * टी; इंट नोडकाउंट;
फ़ंक्शन के अंदर हमारे पास थोड़ी देर का लूप होता है जो चलता है जबकि करंट शून्य की ओर इशारा नहीं करता है। लूप के लिए पहला एम पुनरावृत्तियों के लिए चलता है। लूप के लिए पहली बार वर्तमान . को क्रियान्वित करने के बाद सूचक लिंक की गई सूची में M के बाद नोड को इंगित करता है। इसके बाद नोड *t को करंट-> अगला मान दिया जाता है, जो डिलीट किया जाने वाला पहला मान होता है।
जबकि (वर्तमान){ के लिए (नोडकाउंट =1; नोडकाउंट <एम एंड&करंट! =NULL; नोडकाउंट ++) करंट =करंट-> अगला; अगर (वर्तमान ==NULL) वापसी; टी =वर्तमान-> अगला;
लूप के लिए दूसरा एन पुनरावृत्तियों के लिए चलता है और शुरुआती स्थिति से एन नोड्स की संख्या को मुक्त करता है। करंट-> अगला तब t को सौंपा जाता है और t हमारा वर्तमान नोड बन जाता है।
के लिए टी =टी-> अगला; मुक्त(अस्थायी);}वर्तमान->अगला =टी;वर्तमान =टी;अंत में, प्रिंटलिस्ट (नोड * हेड) जो हेड पॉइंटर लेता है, लिंक की गई सूची को प्रिंट करता है।
शून्य प्रिंटलिस्ट (नोड * हेड) {नोड * अस्थायी =सिर; जबकि (अस्थायी!=NULL){ cout<data<<" "; अस्थायी =अस्थायी-> अगला; } cout< उदाहरण
आइए लिंक की गई सूची के एम नोड्स के बाद एन नोड्स को हटाने के लिए निम्नलिखित कार्यान्वयन को देखें -
#includeनेमस्पेस का उपयोग करके std;struct Node{ int data; नोड * अगला;}; शून्य createList (नोड ** headPtr, int new_data) {नोड * नया नोड =नया नोड (); नया नोड-> डेटा =नया_डेटा; नया नोड-> अगला =(* हेडपीटीआर); (* headPtr) =newNode;} शून्य प्रिंटलिस्ट (नोड * हेड) {नोड * अस्थायी =सिर; जबकि (अस्थायी!=NULL){ cout< data<<" "; अस्थायी =अस्थायी-> अगला; } cout< अगला; अगर (वर्तमान ==NULL) वापसी; टी =वर्तमान-> अगला; के लिए (नोडकाउंट =1; नोडकाउंट <=एन &&टी! =न्यूल; नोडकाउंट ++) {नोड * अस्थायी =टी; टी =टी-> अगला; मुक्त (अस्थायी); } वर्तमान-> अगला =टी; वर्तमान =टी; }}int main(){ नोड* हेड =NULL; इंट एम =2, एन =2; क्रिएटलिस्ट (और हेड, 2); क्रिएटलिस्ट (और हेड, 4); क्रिएटलिस्ट (और हेड, 6); क्रिएटलिस्ट (और हेड, 8); क्रिएटलिस्ट (और हेड, 10); क्रिएटलिस्ट (और हेड, 12); क्रिएटलिस्ट (और हेड, 14); cout <<"एम =" <<एम <<"एन =" <<एन <<एंडल; cout<<"मूल लिंक की गई सूची:"< आउटपुट
उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा -
M =2 N =2मूल लिंक की गई सूची :14 12 10 8 6 4 2हटाने के बाद लिंक की गई सूची :14 12 6 4