2017-03-08 2 views
-3

Ich möchte alle Elemente in meiner verketteten Liste entfernen, ohne die clear Methode zu verwenden. derzeitentfernen Sie alle Elemente aus einer verketteten Liste ohne .clear() java

Dies ist mein Code

//-----inner class----- 
private static class Node <T> { 
    private T data; 
    //next just points 
    private Node<T> next; 

    //constructs a node 
    public Node(T data, Node<T> next){ 
    this.data = data; 
    this.next = next; 
    } 

    public T getData(){ return data;} 

    public Node<T> getNext(){ return next;} 

}

private LinkedList<T> theList = new LinkedList<T>(); 
private Node<T> head; 
private Node<T> tail = null; 
private int size=0; 

public ListNoOrder() { 
    this.head = null; 
    size = 0; 
} 

//an add method 
public void add(T newElt) { 
    //if the new element equals null 
    //catch the exception 
    try{ if (newElt==(null));} 
    catch (Exception illegalArgumentException){ 
    throw new IllegalArgumentException();} 

    //if it doesn't catch an exception it adds the element to the list 
    //and increment the size by one 


    //what does the head = new Node<T>(newElt, head) mean??? 
    head = new Node<T>(newElt, head); 
    size++; 
} 

Die Reset-Methode, die ich implementieren möchten Wenn meine aktuelle Liste vier Objekte hat nach dem Aufruf dieser Methode ich diese Liste haben wollen 0 Objekte

public void reset() { 
    head = null; 
} 

Es sollte funktionieren, aber jedes Mal, wenn ich es teste sagt es Nichts wurde gelöscht. Dies sind nur Teile des vollständigen Codes.

+2

Ist das 'java.util.LinkedList' oder eine eigene Implementierung? – Jeremy

+1

Ihr Fragetext sagt das genaue Gegenteil Ihres Titels ?! – GhostCat

+0

@ Jeremy meine eigene Implementierung – lionbear28

Antwort

0
public void reset() { 
    head = null; 
} 

(You)

sollte es funktionieren, aber jedes Mal teste ich es sagt nichts ist gelöscht. Dies ist nur Bits und Stücke des kompletten Code

(Mein Kommentar)

Sie den Verweis auf das erste Element der Liste entfernen, so dann, wenn kein Bezug dieser Liste gibt es nur in Erinnerung an JVM und Garbage Kollektors wird es aus dem Speicher entfernen, aber Sie setzen die Größe nicht auf Null (Größe = 0;) und wenn der Test oder etwas anderes die Liste überprüft, informiert sie immer noch, dass sie zB "size = 6" haben. Von der anderen Seite Sie Funktion haben, die Ihre Liste wird zurückgesetzt,

public ListNoOrder() { 
    this.head = null; 
    size = 0; 
} 

Alle Kommentare in BrokenEnglish geschrieben :)

Verwandte Themen