जावा में लिंक्ड सूचियों का उपयोग करने का परिचय

जावा में लिंक्ड सूचियों का उपयोग करने का परिचय

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





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





लिंक्ड लिस्ट कैसे काम करती है?

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





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

जावा में एक लिंक्ड सूची बनाना

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



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

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





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

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





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

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


public class Node {
private int Data;
private Node NextNode;
//constructor
public Node() {
Data = 0;
NextNode = null;
}
//getters and setters
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNextNode() {
return NextNode;
}
public void setNextNode(Node nextNode) {
NextNode = nextNode;
}
}

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

लिंक्ड सूची उदाहरण

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

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = null;
}
}

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

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

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

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

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

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

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

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

//insert node at front method
public void insertAtFront(int key) {
//create a new node using the node class
Node Temp = new Node();
//check if the Temp node was successfully created
//assign the data that was provides by the user to it
if(Temp != null) {
Temp.setData(key);
Temp.setNextNode(null);

//check if the head of the linked list is empty
//assign the node that was just created to the head position
if(Head == null) {
Head = Temp;
}
//if a node is already at the head position
//add the new node to it and set it as the head
else {
Temp.setNextNode(Head);
Head = Temp;
}
}
}

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

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

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

public class Driver {
//executes the program
public static void main(String[] args) {
//create a new linked list called List
LinkedList List = new LinkedList();
//add each value to the front of the linked list as a new node
List.insertAtFront(10);
List.insertAtFront(8);
List.insertAtFront(6);
List.insertAtFront(4);
List.insertAtFront(2);
}
}

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

mmorpg गेम्स ऑनलाइन मुफ्त कोई डाउनलोड नहीं

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

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

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

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

//display all nodes method
public void displayAllNodes() {
//create a new node call Temp and assign it to the head of the linked list
//if the head has a null value then the linked list is empty
Node Temp = Head;
if (Head == null){
System.out.println('The list is empty.');
return;
}
System.out.println('The List:');

while(Temp != null) {
//print the data in each node to the console(starting from the head)
System.out.print(Temp.getData() + ' ');
Temp = Temp.getNextNode();
}
}

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

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

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

//print the nodes in a linked list
List.displayAllNodes();

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

सूची:

2 4 6 8 10

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

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

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

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

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

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

//search for a single node using a key
public boolean findNode(int key) {
//create a new node and place it at the head of the linked list
Node Temp = Head;
//while the current node is not empty
//check if its data matches the key provided by the user
while (Temp != null) {
if (Temp.getData() == key) {
System.out.println('The node is in the list');
return true;
}
//move to the next node
Temp = Temp.getNextNode();
}
//if the key was not found in the linked list
System.out.println('The node is not in the list');
return false;
}

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

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

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

//check if a node is in the linked list
List.findNode(4);

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

The node is in the list

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

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

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

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

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

public void findAndDelete(int key) {
Node Temp = Head;
Node prev = null;
//check if the head node holds the data
//and delete it
if (Temp != null && Temp.getData() == key) {
Head = Temp.getNextNode();
return;
}
//search the other nodes in the list
//and delete it
while (Temp != null) {
if (Temp.getNextNode().getData() == key ) {
prev = Temp.getNextNode().getNextNode();
Temp.setNextNode(prev);
return;
}
Temp = Temp.getNextNode();
}
}

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

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

एचबीओ मुफ्त में कैसे प्राप्त करें
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

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

The List:
2 6 8 10

अब आप जावा में लिंक्ड सूचियाँ बना सकते हैं

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

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

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

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

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

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

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

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

हमारे न्यूज़लेटर की सदस्यता लें

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

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