2016-04-14 3 views
1

erstellt Java verknüpfte Liste, um einige Daten hinzuzufügen. möchte erste Daten in dieser verknüpften Liste vergleichen. Wenn ich peek() benutze funktioniert es nicht.java verknüpfte Liste vergleichen mit dem ersten Element und entfernen mit peek() Methode

package list; 

public class LinkList { 
    private class Node<T> { 

     public final T data; 
     public Node next; 

     public Node(T data) { 
      this.data = data; 
     } 

     public void displayNode() { 
      System.out.print(data + " "); 
     } 
    } 

    public static Node first = null; 
    private Node last = null; 

    public boolean isEmpty() { 
     return (first == null); 
    } 

    public <T> void addLast(T data) { 
     Node n = new Node(data); 
     if (isEmpty()) { 
      n.next = first; 
      first = n; 
      last = n; 
     } else { 
      last.next = n; 
      last = n; 
      last.next = null; 
     } 
    } 

    public void removeFirst() { 

     Node temp = first; 
     if (first.next == null) { 
      last = null; 
     } 
     first = first.next; 

    } 

    public void displayList() { 
     Node current = first; 
     while (current != null) { 
      current.displayNode(); 
      current = current.next; 
     } 
    } 

} 

LinkListQueue:

package list; 

public class LinkListQueue { 
    LinkList newLinkList = new LinkList(); 

    public <T> void enqueue(T data) { 
     newLinkList.addLast(data); 

    } 

    public void dequeue() { 
     if (!newLinkList.isEmpty()) { 
      newLinkList.removeFirst(); 
     } 

    } 

    public String displayQueue() { 
     newLinkList.displayList(); 
     System.out.println(); 

     return ""; 
    } 

    public boolean isEmpty() { 
     return newLinkList.isEmpty(); 
    } 
} 

LinkListQueueMain:

package list; 

public class LinkListqueueMain { 
    public String getValue=null; 
    public static String displayQ = null; 
    static LinkListQueue queueImpl = new LinkListQueue(); 
    static LinkList linkList = new LinkList(); 

    public static void main(String[] args) { 
     runData(); 
    } 

    public static void runData() { 
     queueImpl.enqueue("80%"); 
     queueImpl.enqueue("70%"); 
     queueImpl.enqueue("60%"); 
     queueImpl.enqueue("85%"); 
     queueImpl.enqueue("45%"); 
     queueImpl.enqueue("55%"); 

     for (int i = 0; i < 5; i++) { 
      System.out.println(linkList.toString()); 
     } 
    } 
} 

Diese andere Art und Weise Frontelement und vergleichen oder, wie man schreibt peek() -Methode

Linklist Klasse zu erhalten ist mein Code. Irgendeine Idee, wie man das macht?

+2

Zeigen Sie, was Sie versucht haben. Ihre Frage besagt, dass Peek nicht für Sie funktioniert, aber ich sehe nicht, dass Sie irgendwo in Ihrem Code einen Peek aufrufen. – nhouser9

+0

Und könnten Sie genau erklären, was Sie tun möchten? Ich sehe nirgends die _peek_ Funktion, also verstehe ich nicht wirklich was du willst. – dquijada

+0

PS (etwas unzusammenhängend): Sie sollten die "toString" -Methode auf Node überschreiben, anstatt diese Funktion zu "display node" zu erstellen. – dquijada

Antwort

1

Zuerst müssen Sie die LinkList parametrisieren, nicht unbedingt den Knoten, da die LinkList die öffentliche API zur Außenwelt ist.

public class LinkList<T> { 
    private static class Node { 

Dann könnten Sie den entfernten Wert zurückgeben. (removeFirst kann eine NullPointerException auf eine leere Liste werfen.)

public T removeFirst() { 
    T removed = first.data; 
    if (first.next == null) { 
     last = null; 
    } 
    first = first.next; 
    return removed; 
} 

public T peekFirst() { 
    return first.data; 
} 
+0

Danke Antwort ist korrekt. – Chara

Verwandte Themen