इस लेख में, हम समझेंगे कि लिंक्ड लिस्ट कैसे लागू करें। java.util.LinkedList क्लास ऑपरेशन्स वे परफॉर्म करते हैं जो हम डबल-लिंक्ड लिस्ट के लिए उम्मीद कर सकते हैं। ऑपरेशन्स जो लिस्ट में इंडेक्स करते हैं, लिस्ट को शुरुआत या अंत से ट्रैवर्स करेंगे, जो भी निर्दिष्ट इंडेक्स के करीब हो।
नीचे इसका प्रदर्शन है:
मान लीजिए हमारा इनपुट है:
प्रोग्राम चलाएं
वांछित आउटपुट होगा:
लिंक्ड लिस्ट के एलिमेंट्स हैं: 100 150 200 250
एल्गोरिदम
चरण 1 - शुरू चरण 2 - आवश्यक मेंबर्स के साथ एक क्लास बनाएं चरण 3 - लिस्ट में एलिमेंट्स जोड़ने के लिए 'insert' फंक्शन परिभाषित करें चरण 4 - 'main' मेथड में, क्लास का नया इंस्टेंस बनाएं चरण 5 - एक लिस्ट बनाएं, और 'insert' मेथड का उपयोग करके इसमें एलिमेंट्स जोड़ें चरण 6 - लिस्ट पर इटरेट करें, और वर्तमान नोड में मौजूद मान प्रदर्शित करें चरण 7 - अगले नोड पर जाएं और वही ऑपरेशन करें चरण 8 - इसे तब तक करें जब तक लिस्ट का अंत न पहुंच जाए चरण 9 - परिणाम प्रदर्शित करें चरण 10 - रुकें
उदाहरण 1
यहाँ, हम सभी ऑपरेशन्स को 'main' फंक्शन के तहत बांधते हैं।
public class Demo {
Node head;
static class Node {
int data;
Node next_element;
Node(int element) {
data = element;
next_element = null;
}
}
public static Demo insert(Demo input_list, int data) {
Node new_node = new Node(data);
new_node.next_element = null;
if (input_list.head == null) {
input_list.head = new_node;
} else {
Node last = input_list.head;
while (last.next_element != null) {
last = last.next_element;
}
last.next_element = new_node;
}
return input_list;
}
public static void main(String[] args) {
Demo input_list = new Demo();
System.out.print("एक लिंक्ड लिस्ट घोषित की गई: \n");
input_list = insert(input_list, 100);
input_list = insert(input_list, 150);
input_list = insert(input_list, 200);
input_list = insert(input_list, 250);
Node current_node = input_list.head;
System.out.print("लिंक्ड लिस्ट के एलिमेंट्स हैं: \n");
while (current_node != null) {
System.out.print(current_node.data + " ");
current_node = current_node.next_element;
}
}
}
आउटपुट
एक लिंक्ड लिस्ट घोषित की गई: लिंक्ड लिस्ट के एलिमेंट्स हैं: 100 150 200 250
उदाहरण 2
यहाँ, हम ऑपरेशन्स को फंक्शन्स में एनकैप्सुलेट करते हैं जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रदर्शित करते हैं।
public class Demo {
Node head;
static class Node {
int data;
Node next_element;
Node(int element) {
data = element;
next_element = null;
}
}
public static Demo insert(Demo input_list, int data) {
Node new_node = new Node(data);
new_node.next_element = null;
if (input_list.head == null) {
input_list.head = new_node;
} else {
Node last = input_list.head;
while (last.next_element != null) {
last = last.next_element;
}
last.next_element = new_node;
}
return input_list;
}
public static void print_list(Demo input_list) {
Node current_node = input_list.head;
System.out.print("लिंक्ड लिस्ट के एलिमेंट्स हैं: \n");
while (current_node != null) {
System.out.print(current_node.data + " ");
current_node = current_node.next_element;
}
}
public static void main(String[] args) {
Demo input_list = new Demo();
System.out.print("एक लिंक्ड लिस्ट घोषित की गई: \n");
input_list = insert(input_list, 100);
input_list = insert(input_list, 150);
input_list = insert(input_list, 200);
input_list = insert(input_list, 250);
print_list(input_list);
}
}
आउटपुट
एक लिंक्ड लिस्ट घोषित की गई: लिंक्ड लिस्ट के एलिमेंट्स हैं: 100 150 200 250
लिंक्ड लिस्ट ऑपरेशन्स और जटिलता
| ऑपरेशन | सिंगली लिंक्ड लिस्ट | डबल लिंक्ड लिस्ट | Java LinkedList |
|---|---|---|---|
| इंसर्ट (हेड) | O(1) | O(1) | O(1) |
| इंसर्ट (टेल) | O(n) | O(1) | O(1) |
| इंसर्ट (मध्य) | O(n) | O(n) | O(n) |
| डिलीट (हेड) | O(1) | O(1) | O(1) |
| डिलीट (टेल) | O(n) | O(1) | O(1) |
| सर्च | O(n) | O(n) | O(n) |
| एक्सेस बाय इंडेक्स | O(n) | O(n) | O(n) |
सुधार: टेल पॉइंटर जोड़ना
class LinkedList {
Node head, tail;
int size = 0;
void addLast(int data) {
Node newNode = new Node(data);
if (tail == null) {
head = tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
size++;
}
void addFirst(int data) {
Node newNode = new Node(data);
newNode.next = head;
head = newNode;
if (tail == null) tail = newNode;
size++;
}
}
Java Collections Framework में LinkedList
- इंटरफेस लागू करता है: List, Deque, Queue, Cloneable, Serializable
- नल एलिमेंट्स: अनुमत
- थ्रेड-सेफ: नहीं (Collections.synchronizedList उपयोग करें)
- इटरेटर: फेल-फास्ट