मैं जावा में एक लिंक्ड लिस्ट डेटा स्ट्रक्चर कैसे बना सकता हूं?

जावा में एक लिंक्ड सूची बनाने का सबसे अच्छा तरीका क्या है?

0
ro fr bn
एक लिंक्ड सूची बनाने का सबसे अच्छा तरीका अंतर्निहित लिंक्ड सूची का उपयोग करना है। कक्षाओं में निर्मित फिर से लिखें मत।
जोड़ा लेखक Peter Lawrey, स्रोत
यह सवाल प्रोग्रामर चर्चा के लिए वैध और बहुत रचनात्मक है
जोड़ा लेखक anshulkatta, स्रोत

6 उत्तर

Java.util.LinkedList का उपयोग करने के लिए यह बहुत बेहतर है, क्योंकि यह संभवतया अधिक अनुकूलित है, जिसे आप लिखेंगे।

0
जोड़ा
और यह पहली बार काम करेगा।
जोड़ा लेखक Peter Lawrey, स्रोत

जावा में एक LinkedList कार्यान्वयन है, जो कि आप जांचना चाह सकते हैं। आप जेडीके और उसके स्रोतों को java.sun.com पर डाउनलोड कर सकते हैं।

0
जोड़ा
LinkedList के कार्यान्वयन को देखने के लिए जेडीके डाउनलोड करने के बजाय, आप केवल इसे यहां LinkedList.java ऑनलाइन देखें । वह पृष्ठ भी सिंटैक्स-कोड को हाइलाइट करता है और जावाडोक टिप्पणियों को इनलाइन प्रदान करता है।
जोड़ा लेखक Rory O'Kane, स्रोत
क्या यह एक लिंक्ड सूची का पूरा बिंदु नहीं है?
जोड़ा लेखक jrockway, स्रोत
क्या जावा की लिंक्डलिस्ट आपको मनमानी स्थितियों पर तत्वों को सम्मिलित करने और निकालने की अनुमति नहीं देती है?
जोड़ा लेखक Seun Osewa, स्रोत
@Seun Osewa यदि आप एक मनमानी स्थिति में जोड़ना चाहते हैं pls एक ArrayList का उपयोग करें :)
जोड़ा लेखक headgrowe, स्रोत

java.util.LinkedList का उपयोग करें। इस कदर:

list = new java.util.LinkedList()
0
जोड़ा

जावा से परिचित डेवलपर्स का स्पष्ट समाधान java.util में पहले से प्रदान की गई LinkedList कक्षा का उपयोग करना है। कहें, हालांकि, आप किसी कारण से अपना खुद का कार्यान्वयन करना चाहते थे। यहां एक लिंक्ड सूची का एक त्वरित उदाहरण दिया गया है जो सूची की शुरुआत में एक नया लिंक सम्मिलित करता है, सूची की शुरुआत से हटा देता है और इसमें शामिल लिंक प्रिंट करने के लिए सूची के माध्यम से लूप होता है। इस कार्यान्वयन के लिए संवर्द्धन में इसे डबल-लिंक्ड सूची बनाने के लिए, बीच में सम्मिलित करें और हटाएं को जोड़ने के तरीके शामिल हैं या अंत, और प्राप्त करें और क्रमबद्ध करें विधियों को जोड़कर भी।

Note: In the example, the Link object doesn't actually contain another Link object - nextLink is actually only a reference to another link.

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();
    }
}
0
जोड़ा
आप इंट और डबल स्टोर करने के बजाए डेटा प्रकार के लिए जेनेरिक का उपयोग करने के लिए इस कोड को आसानी से आसानी से सुधार सकते हैं।
जोड़ा लेखक shsteimer, स्रोत
जब आप सम्मिलित करते हैं, तो आपका पहला आइटम कभी भी अगला लिंक नहीं मिलेगा - जब तक कि मुझे जावा संदर्भों के साथ कुछ याद न हो
जोड़ा लेखक Chris S, स्रोत
मैं डिलीट (इंडेक्स) विधि कैसे कार्यान्वित कर सकता हूं?
जोड़ा लेखक JohnDow, स्रोत
@shsteimer: काफी निश्चित रूप से, लेकिन चूंकि इस कोड का एकमात्र अच्छा उपयोग तकनीक का प्रदर्शन करना है, यह किसी की भी मदद नहीं करेगा। यह केवल मूल विचार फैल जाएगा।
जोड़ा लेखक Joachim Sauer, स्रोत
यह <ओओ> सार्वजनिक लिंक अगली लिंक होने के लिए ओओ दृष्टिकोण अच्छा नहीं है और कक्षा के बाहर इसे संचालित करता है। यह सम्मानजनक हो सकता है जब लिंक LinkList का आंतरिक वर्ग होगा। यह कोड का एक और गुच्छा है क्योंकि जावा केवल एक और संस्करण-सी-सी था।
जोड़ा लेखक Bart, स्रोत
यदि आप किसी रिक्त सूची से हटाते हैं, तो आपको एक NullPointerException मिलेगा, विशेष रूप से जब आप first.nextLink तक पहुंचने का प्रयास करेंगे
जोड़ा लेखक Bad Request, स्रोत

उपर्युक्त लिंक्ड सूची विपरीत दिशा में प्रदर्शित होती है। मुझे लगता है कि सम्मिलित विधि का सही कार्यान्वयन होना चाहिए

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;
    }
} 
0
जोड़ा
//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;
            }
        }
    }
}
0
जोड़ा