डेटा संरचना डेटा को संग्रहीत करने, पुनर्प्राप्त करने और हटाने के लिए विभिन्न पूर्व-निर्धारित विधियों का उपयोग करती है जो कुशल कार्यक्रमों के निर्माण में समाप्त होती है। एक लिंक्ड सूची एक लोकप्रिय डेटा संरचना है, जिसमें नोड्स की एक सूची होती है जो जुड़े (या लिंक) होते हैं।

लेकिन आप जावा में एक लिंक्ड सूची कैसे बनाते हैं? चलो एक नज़र डालते हैं।

प्रत्येक लिंक की गई सूची एक विशेष नोड से शुरू होती है जिसे अक्सर "हेड" के रूप में जाना जाता है, जिस पर हर समय सूची की शुरुआत की ओर इशारा करने की जिम्मेदारी होती है। सिर महत्वपूर्ण है क्योंकि लिंक की गई सूची में प्रत्येक नोड को अपने उत्तराधिकारी का भौतिक रूप से पालन करने की आवश्यकता नहीं है (जिसका अर्थ है कि पूर्ववर्ती और उत्तराधिकारी को शारीरिक रूप से आसन्न नहीं होना चाहिए)।

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

एक जावा प्रोग्राम जो लिंक्ड सूचियों को बनाने और उनमें हेरफेर करने के लिए डिज़ाइन किया गया है, उसके तीन विशिष्ट खंड होंगे; नोड क्लास, लिंक्ड लिस्ट क्लास और ड्राइवर। हालाँकि ये तीन खंड एक फ़ाइल में संयोजित हो सकते हैं, कंप्यूटर विज्ञान में एक डिज़ाइन सिद्धांत है जिसे "चिंताओं को अलग करना" के रूप में जाना जाता है, जिसे हर डेवलपर को पता होना चाहिए।

instagram viewer

चिंताओं का पृथक्करण सिद्धांत यह निर्देश देता है कि कोड के प्रत्येक खंड जो एक विशिष्ट चिंता को संबोधित करता है, को अलग किया जाना चाहिए। यह सिद्धांत आपको क्लीनर (अधिक पठनीय) कोड बनाने में मदद करेगा और डेटा संरचना बनाने के लिए आदर्श है।

जावा में एक लिंक्ड सूची बनाने में पहला कदम एक नोड वर्ग बनाना है। एक नोड वर्ग में दो विशेषताएँ होनी चाहिए; विशेषताओं में से एक नोड के डेटा भाग का प्रतिनिधित्व करेगी, जबकि अन्य विशेषता लिंक किए गए हिस्से का प्रतिनिधित्व करेगी। नोड क्लास में कंस्ट्रक्टर, गेटर्स और सेटर्स भी होने चाहिए।

संबंधित: जावा में कक्षाएं बनाना सीखें

गेटर्स और सेटर्स अन्य वर्गों (जैसे लिंक्ड सूची वर्ग) को लिंक की गई सूची के भीतर विभिन्न नोड्स तक पहुंचने की अनुमति देंगे।

नोड वर्ग उदाहरण

हमारे मतलब का अंदाजा लगाने के लिए नीचे एक नोड वर्ग का उदाहरण दिया गया है:


सार्वजनिक वर्ग नोड {
निजी इंट डेटा;
निजी नोड अगला नोड;
//constructor
सार्वजनिक नोड () {
डेटा = 0;
नेक्स्ट नोड = शून्य;
}
// गेटर्स और सेटर्स
सार्वजनिक int getData () {
डेटा वापस करें;
}
सार्वजनिक शून्य सेटडेटा (इंट डेटा) {
डेटा = डेटा;
}
सार्वजनिक नोड getNextNode () {
अगला नोड लौटाएं;
}
सार्वजनिक शून्य सेटनेक्स्ट नोड (नोड नेक्स्ट नोड) {
नेक्स्ट नोड = नेक्स्ट नोड;
}
}

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

जावा में लिंक की गई सूची का एक उदाहरण नीचे दिया गया है।

पब्लिक क्लास लिंक्डलिस्ट {
निजी नोड प्रमुख;
//constructor
सार्वजनिक लिंक्डलिस्ट () {
सिर = शून्य;
}
}

उपरोक्त कोड एक लिंक्ड लिस्ट क्लास बनाएगा, हालांकि, इसके विभिन्न ऑपरेशनों के बिना, क्लास को एक खाली शेल के बराबर के रूप में देखा जा सकता है। लिंक की गई सूची डेटा संरचना में कई ऑपरेशन होते हैं जिनका उपयोग इसे पॉप्युलेट करने के लिए किया जा सकता है:

  • सामने डालें।
  • बीच में डालें।
  • सबसे पीछे डालें।

संबंधित: जावास्क्रिप्ट ES6 कक्षाओं के साथ डेटा संरचनाएं कैसे बनाएं

सम्मिलन विधियों का लिंक्ड सूची संग्रह एक कारण है कि एक डेवलपर इस डेटा का उपयोग करना चुन सकता है किसी अन्य डेटा संरचना जैसे स्टैक (जो केवल ऊपर से सम्मिलन और हटाने की अनुमति देता है) पर संरचना।

फ्रंट मेथड में इन्सर्ट का उपयोग करना

जैसा कि नाम से पता चलता है, सामने की विधि में सम्मिलित करें, लिंक की गई सूची के सामने नया डेटा (या नए नोड्स) सम्मिलित करता है।

सामने विधि उदाहरण में सम्मिलित करें

नीचे एक उदाहरण दिया गया है कि आप अपनी सूची में सबसे आगे नया डेटा कैसे सम्मिलित करेंगे।

 // सामने की विधि में नोड डालें
सार्वजनिक शून्य सम्मिलित करेंएटफ्रंट (इंट कुंजी) {
// नोड वर्ग का उपयोग करके एक नया नोड बनाएं
नोड अस्थायी = नया नोड ();
// जांचें कि क्या Temp नोड सफलतापूर्वक बनाया गया था
// उस डेटा को असाइन करें जो उपयोगकर्ता द्वारा उसे प्रदान किया गया था
अगर (अस्थायी! = शून्य) {
Temp.setData (कुंजी);
Temp.setNextNode (शून्य);
// जांचें कि क्या लिंक की गई सूची का प्रमुख खाली है
// उस नोड को असाइन करें जो अभी सिर की स्थिति में बनाया गया था
अगर (सिर == शून्य) {
सिर = अस्थायी;
}
// यदि कोई नोड पहले से ही सिर की स्थिति में है
// इसमें नया नोड जोड़ें और इसे हेड के रूप में सेट करें
अन्य {
Temp.setNextNode (सिर);
सिर = अस्थायी;
}
}
}

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

सामने उदाहरण पर सम्मिलित करें लागू करना

नीचे एक उदाहरण दिया गया है कि आप सामने की तरफ इंसर्ट कैसे लगाएंगे।

पब्लिक क्लास ड्राइवर {
// प्रोग्राम निष्पादित करता है
सार्वजनिक स्थैतिक शून्य main (String [] args) {
// एक नई लिंक की गई सूची बनाएं जिसे List. कहा जाता है
लिंक्डलिस्ट सूची = नई लिंक्डलिस्ट ();
// प्रत्येक मान को लिंक की गई सूची के सामने एक नए नोड के रूप में जोड़ें
List.insertAtFront (10);
List.insertAtFront (8);
List.insertAtFront (6);
List.insertAtFront (4);
List.insertAtFront (2);
}
}

NS चालक क्लास (जो कि वह नाम है जिसे अक्सर जावा में निष्पादन योग्य वर्ग को सौंपा जाता है), लिंक्डलिस्ट क्लास का उपयोग पांच सम संख्याओं की एक लिंक्ड सूची बनाने के लिए करता है। ऊपर दिए गए कोड को देखते हुए यह देखना आसान होना चाहिए कि लिंक की गई सूची में नंबर "2" शीर्ष स्थान पर है। लेकिन आप इसकी पुष्टि कैसे कर सकते हैं?

प्रदर्शन सभी नोड्स विधि का उपयोग करना

प्रदर्शन सभी नोड्स विधि एक आवश्यक लिंक्ड सूची विधि है। इसके बिना, एक डेवलपर लिंक की गई सूची में नोड्स को देखने में सक्षम नहीं होगा। यह सूची बनाने वाले प्रत्येक नोड में संग्रहीत डेटा को प्रिंट करने वाली लिंक्ड सूची (सिर से शुरू) के माध्यम से यात्रा करता है।

सभी नोड्स विधि उदाहरण प्रदर्शित करें

जावा में डिस्प्ले ऑल नोट्स मेथड का उपयोग करने का एक उदाहरण नीचे दिया गया है।

// सभी नोड्स विधि प्रदर्शित करें
सार्वजनिक शून्य डिस्प्लेऑलनोड्स () {
// एक नया नोड कॉल टेम्प बनाएं और इसे लिंक की गई सूची के प्रमुख को असाइन करें
// यदि सिर का शून्य मान है, तो लिंक की गई सूची खाली है
नोड अस्थायी = सिर;
अगर (सिर == शून्य) {
System.out.println ("सूची खाली है।");
वापसी;
}
System.out.println ("सूची:");
जबकि (अस्थायी! = शून्य) {
// प्रत्येक नोड में डेटा को कंसोल पर प्रिंट करें (सिर से शुरू)
System.out.print (Temp.getData () + "");
अस्थायी = Temp.getNextNode ();
}
}

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

प्रदर्शन सभी नोड्स विधि उदाहरण का उपयोग करना

नीचे, आप देखेंगे कि आप डिस्प्ले ऑल नोड्स विधि का उपयोग कैसे करेंगे।

// लिंक की गई सूची में नोड्स को प्रिंट करें
List.displayAllNodes ();

उपरोक्त कोड की लाइन को निष्पादित करने से कंसोल में निम्न आउटपुट उत्पन्न होगा:

सूचि:

2 4 6 8 10

नोड खोजें विधि का उपयोग करना

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

उदाहरण के लिए, ऐसे बैंक के लिए व्यावहारिक नहीं होगा, जिसके पास लाखों ग्राहक हों, वह अपने डेटाबेस में सभी ग्राहकों का प्रिंट ले ले, जब उन्हें केवल एक विशिष्ट ग्राहक का विवरण देखने की आवश्यकता हो।

इसलिए, का उपयोग करने के बजाय डिस्प्लेऑलनोड्स विधि, आवश्यक डेटा वाले एकल नोड को खोजने के लिए एक अधिक कुशल तरीका है। यही कारण है कि लिंक्ड सूची डेटा संरचना में एकल नोड विधि की खोज महत्वपूर्ण है।

नोड विधि उदाहरण खोजें

नीचे खोज नोड विधि का उपयोग करने का एक उदाहरण है।

// कुंजी का उपयोग करके एकल नोड खोजें
पब्लिक बूलियन फाइंडनोड (इंट की) {
// एक नया नोड बनाएं और इसे लिंक की गई सूची के शीर्ष पर रखें
नोड अस्थायी = सिर;
// जबकि वर्तमान नोड खाली नहीं है
// जांचें कि क्या इसका डेटा उपयोगकर्ता द्वारा प्रदान की गई कुंजी से मेल खाता है
जबकि (अस्थायी! = शून्य) {
अगर (Temp.getData () == कुंजी) {
System.out.println ("नोड सूची में है");
सच लौटना;
}
// अगले नोड पर जाएं
अस्थायी = Temp.getNextNode ();
}
// यदि लिंक की गई सूची में कुंजी नहीं मिली है
System.out.println ("नोड सूची में नहीं है");
विवरण झूठा है;
}

साथ डिस्प्लेऑलनोड्स विधि, आपने पुष्टि की है कि लिंक्ड सूची इसमें 2 से 10 तक की 5 सम संख्याएँ होती हैं। NS फाइंडनोड ऊपर दिया गया उदाहरण पुष्टि कर सकता है कि क्या उन सम संख्याओं में से एक अंक 4 है, बस ड्राइवर वर्ग में विधि को कॉल करके और संख्या को एक पैरामीटर के रूप में प्रदान करके।

नोड विधि उदाहरण का उपयोग करना

नीचे एक उदाहरण दिया गया है कि आप व्यवहार में फाइंड नोड विधि का उपयोग कैसे करेंगे।

// जांचें कि क्या नोड लिंक की गई सूची में है
List.findNode (4);

उपरोक्त कोड कंसोल में निम्न आउटपुट उत्पन्न करेगा:

नोड सूची में है

Delete a Node Method का उपयोग करना

ऊपर से उसी बैंक उदाहरण का उपयोग करते हुए, बैंक के डेटाबेस में एक ग्राहक अपना खाता बंद करना चाह सकता है। यह वह जगह है जहां एक नोड विधि हटाएं उपयोगी होगी। यह सबसे जटिल लिंक्ड सूची विधि है।

एक नोड हटाएं विधि किसी दिए गए नोड की खोज करती है, उस नोड को हटा देती है, और पिछले नोड को हटाए गए नोड के बाद वाले नोड से लिंक करती है।

एक नोड विधि उदाहरण हटाएं

नीचे एक नोड विधि को हटाने का एक उदाहरण है।

सार्वजनिक शून्य खोज और हटाएं (इंट कुंजी) { 
नोड अस्थायी = सिर;
नोड पिछला = अशक्त;
// जांचें कि क्या हेड नोड डेटा रखता है
// और इसे हटा दें
अगर (अस्थायी! = अशक्त && Temp.getData () == कुंजी) {
सिर = Temp.getNextNode ();
वापसी;
}
// सूची में अन्य नोड्स खोजें
// और इसे हटा दें
जबकि (अस्थायी! = शून्य) {
अगर (Temp.getNextNode ()। getData () == कुंजी) {
पिछला = Temp.getNextNode ()। getNextNode ();
Temp.setNextNode (पिछला);
वापसी;
}
अस्थायी = Temp.getNextNode ();
}
}

एक नोड विधि उदाहरण हटाएं का उपयोग करना

व्यवहार में एक नोड को हटाने की विधि का उपयोग करने का एक उदाहरण नीचे दिया गया है।

// डेटा रखने वाले नोड को हटाएं 4
List.findAndDelete (4);
// लिंक की गई सूची में सभी नोड्स को प्रिंट करें
List.displayAllNodes ();

पहले से मौजूद ड्राइवर वर्ग में उपरोक्त कोड की दो पंक्तियों का उपयोग करने से कंसोल में निम्न आउटपुट उत्पन्न होगा:

सूचि:
2 6 8 10

यदि आपने इसे इस ट्यूटोरियल लेख के अंत में बनाया है, तो आप सीखेंगे:

  • नोड क्लास कैसे बनाएं।
  • लिंक्ड लिस्ट क्लास कैसे बनाएं।
  • एक लिंक्ड सूची वर्ग को इसकी पूर्वनिर्धारित विधियों के साथ कैसे पॉप्युलेट करें।
  • वांछित परिणाम प्राप्त करने के लिए ड्राइवर वर्ग कैसे बनाएं और विभिन्न लिंक्ड सूची विधियों का उपयोग कैसे करें।

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

साझा करनाकलरवईमेल
Java में Arrays पर ऑपरेशंस कैसे बनाएं और निष्पादित करें

जावा सीखना? सरणियों को आपके डेटा को आसानी से संभालने दें।

आगे पढ़िए

संबंधित विषय
  • प्रोग्रामिंग
  • जावा
  • प्रोग्रामिंग
  • कोडिंग टिप्स
लेखक के बारे में
कदीशा कीन (१९ लेख प्रकाशित)

कदीशा कीन एक पूर्ण-स्टैक सॉफ़्टवेयर डेवलपर और तकनीकी/प्रौद्योगिकी लेखक हैं। उसके पास कुछ सबसे जटिल तकनीकी अवधारणाओं को सरल बनाने की विशिष्ट क्षमता है; उत्पादन सामग्री जिसे किसी भी तकनीकी नौसिखिए द्वारा आसानी से समझा जा सकता है। उसे लिखने, दिलचस्प सॉफ्टवेयर विकसित करने और दुनिया की यात्रा (वृत्तचित्रों के माध्यम से) करने का शौक है।

कदीशा कीन. की अन्य फ़िल्में-टीवी शो

हमारे समाचार पत्र के सदस्य बनें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें