जावा में एक लिंक्ड सूची बनाने का सबसे अच्छा तरीका क्या है?मैं जावा में एक लिंक्ड लिस्ट डेटा स्ट्रक्चर कैसे बना सकता हूं?
उत्तर
जावा के लिए परिचित डेवलपर्स के लिए स्पष्ट समाधान LinkedList वर्ग पहले से ही java.util में प्रदान की जाती उपयोग करने के लिए है। कहें, हालांकि, आप किसी कारण से अपना खुद का कार्यान्वयन करना चाहते थे। यहां एक लिंक्ड सूची का एक त्वरित उदाहरण दिया गया है जो सूची की शुरुआत में एक नया लिंक सम्मिलित करता है, सूची की शुरुआत से हटा देता है और इसमें शामिल लिंक प्रिंट करने के लिए सूची के माध्यम से लूप होता है। संवर्द्धन इस कार्यान्वयन के लिए यह एक डबल-लिंक्ड सूची बनाने में शामिल हैं, और रूप में अच्छी तरह और तरह तरीकों मिल जोड़कर डालने के लिए विधियां जोड़ने और मध्य या अंत से को हटा दें।
नोट: उदाहरण में, लिंक वस्तु वास्तव में एक और लिंक वस्तु शामिल नहीं है - nextLink वास्तव में एक और कड़ी करने के लिए केवल एक संदर्भ है।
class Link {
public int data1;
public double data2;
public Link nextLink;
//Link constructor
public Link(int d1, double d2) {
data1 = d1;
data2 = d2;
}
//Print Link data
public void printLink() {
System.out.print("{" + data1 + ", " + data2 + "} ");
}
}
class LinkList {
private Link first;
//LinkList constructor
public LinkList() {
first = null;
}
//Returns true if list is empty
public boolean isEmpty() {
return first == null;
}
//Inserts a new Link at the first of the list
public void insert(int d1, double d2) {
Link link = new Link(d1, d2);
link.nextLink = first;
first = link;
}
//Deletes the link at the first of the list
public Link delete() {
Link temp = first;
if(first == null){
return null;
//throw new NoSuchElementException(); // this is the better way.
}
first = first.nextLink;
return temp;
}
//Prints list data
public void printList() {
Link currentLink = first;
System.out.print("List: ");
while(currentLink != null) {
currentLink.printLink();
currentLink = currentLink.nextLink;
}
System.out.println("");
}
}
class LinkListTest {
public static void main(String[] args) {
LinkList list = new LinkList();
list.insert(1, 1.01);
list.insert(2, 2.02);
list.insert(3, 3.03);
list.insert(4, 4.04);
list.insert(5, 5.05);
list.printList();
while(!list.isEmpty()) {
Link deletedLink = list.delete();
System.out.print("deleted: ");
deletedLink.printLink();
System.out.println("");
}
list.printList();
}
}
आप इंट और डबल स्टोर करने के बजाए डेटा प्रकार के लिए जेनेरिक का उपयोग करने के लिए इस कोड को आसानी से आसानी से सुधार सकते हैं। – shsteimer
@shsteimer: काफी निश्चित रूप से, लेकिन चूंकि इस कोड का एकमात्र अच्छा उपयोग तकनीक का प्रदर्शन करना है, यह किसी की भी मदद नहीं करेगा। यह केवल मूल विचार फैल जाएगा। –
'सार्वजनिक लिंक अगली लिंक' रखने के लिए ओओ दृष्टिकोण अच्छा नहीं है और कक्षा के बाहर इसका संचालन नहीं है। यह लिंक योग्य हो सकता है जब 'लिंक'' लिंकलिस्ट 'की आंतरिक श्रेणी होगी। यह कोड का एक और गुच्छा है क्योंकि जावा केवल एक और संस्करण-सी-सी था। – Bart
जावा में LinkedList कार्यान्वयन है, जो आप देखना चाहते हैं। आप जेडीके और उसके स्रोत java.sun.com पर डाउनलोड कर सकते हैं।
उपयोग java.util.LinkedList। इस तरह:
list = new java.util.LinkedList()
इसकी बहुत बेहतर है, java.util.LinkedList उपयोग करने के लिए है क्योंकि यह शायद और अधिक अनुकूलित है, एक है कि आप लिखेंगे से।
और यह पहली बार काम करेगा। –
उपरोक्त लिंक की गई सूची विपरीत दिशा में प्रदर्शित होती है। मुझे लगता है कि डालने विधि का सही कार्यान्वयन होना चाहिए
public void insert(int d1, double d2) {
Link link = new Link(d1, d2);
if(first==null){
link.nextLink = null;
first = link;
last=link;
}
else{
last.nextLink=link;
link.nextLink=null;
last=link;
}
}
अंत में नया जोड़ें जब तक कि अन्यथा न कहा गया हो। :-) –
//slightly improved code without using collection framework
package com.test;
public class TestClass {
private static Link last;
private static Link first;
public static void main(String[] args) {
//Inserting
for(int i=0;i<5;i++){
Link.insert(i+5);
}
Link.printList();
//Deleting
Link.deletefromFirst();
Link.printList();
}
protected static class Link {
private int data;
private Link nextlink;
public Link(int d1) {
this.data = d1;
}
public static void insert(int d1) {
Link a = new Link(d1);
a.nextlink = null;
if (first != null) {
last.nextlink = a;
last = a;
} else {
first = a;
last = a;
}
System.out.println("Inserted -:"+d1);
}
public static void deletefromFirst() {
if(null!=first)
{
System.out.println("Deleting -:"+first.data);
first = first.nextlink;
}
else{
System.out.println("No elements in Linked List");
}
}
public static void printList() {
System.out.println("Elements in the list are");
System.out.println("-------------------------");
Link temp = first;
while (temp != null) {
System.out.println(temp.data);
temp = temp.nextlink;
}
}
}
}
- 1. जावा लिंक्ड लिस्ट - विधि
- 2. चक्रीय लिंक्ड लिस्ट एल्गोरिदम
- 3. मैं जावा सैंडबॉक्स कैसे बना सकता हूं?
- 4. लिंक्ड लिस्ट लूप डिटेक्शन एल्गोरिदम
- 5. मैं जावा में गैर-धारावाहिक क्षेत्र कैसे बना सकता हूं?
- 6. मैं सी # कोड में डेटा टेम्पलेट कैसे बना सकता हूं?
- 7. रीलॉक बनाम लिंक्ड लिस्ट स्कैनिंग
- 8. मैं केकेपीएचपी में सत्र डेटा कैसे बना सकता हूं, लिख सकता हूं और पढ़ सकता हूं?
- 9. मैं एक constraintViolationException कैसे बना सकता हूं?
- 10. मैं जावा में हैश टेबल कैसे बना सकता हूं?
- 11. मैं वैश्विक चर के बिना डेटा कैसे बना सकता हूं?
- 12. मैं एंड्रॉइड इरादा कैसे बना सकता हूं जिसमें डेटा है?
- 13. मैं नेटबीन में एक एक्सई कैसे बना सकता हूं?
- 14. मैं जेबुटन से थक गया हूं, मैं जावा में एक अच्छा जीयूआई कैसे बना सकता हूं?
- 15. मैं डेटा संरचना का पुनरावर्तनीय हस्ताक्षर कैसे बना सकता हूं?
- 16. मैं डिमन थ्रेड कैसे बना सकता हूं?
- 17. जावा: स्क्वायर ब्रैकेट के बिना लिंक्ड लिस्ट प्रिंटिंग?
- 18. मैं पर्ल क्लास कैसे बना सकता हूं?
- 19. मैं जावा में एक यादृच्छिक BigDecimal कैसे बना सकता हूँ?
- 20. मैं जावा में एक अमूर्त विधि की तरह जेएस में एक विधि कैसे बना सकता हूं?
- 21. क्या मैं पर्ल में जावा जैसी इंटरफेस बना सकता हूं?
- 22. मैं निष्पादन योग्य जावा प्रोग्राम कैसे बना सकता हूं?
- 23. मैं जावा प्रोग्राम के लिए .exe कैसे बना सकता हूं?
- 24. मैं इस जावा जेनेरिक कास्ट कैसे बना सकता हूं?
- 25. मैं ओज़ में एक सूची कैसे बना सकता हूं?
- 26. मैं WinForms एप्लिकेशन में एक पंक्ति कैसे बना सकता हूं?
- 27. मैं Django में एक अनुरोध ऑब्जेक्ट कैसे बना सकता हूं?
- 28. मैं jekyll में एक पेज कैसे बना सकता हूं?
- 29. मैं पर्ल में एक बाइनरी फ़ाइल कैसे बना सकता हूं?
- 30. मैं HTML में एक टैबड दृश्य कैसे बना सकता हूं?
एक लिंक्ड सूची बनाने के लिए सबसे अच्छा तरीका है लिंक्ड सूची में बनाया का उपयोग करें। कक्षाओं में निर्मित फिर से लिखें मत। –
यह प्रश्न प्रोग्रामर चर्चा के लिए वैध और बहुत रचनात्मक है – anshulkatta