2016-04-14 4 views
1

いくつかのデータを追加するためにJavaのリンクリストを作成しました。そのリンクされたリストの中の最初のデータを比較したい。私がpeek()を使用するとき、それは動作しません。他の前部要素を取得し、比較する方法やどのように覗き見を書く()メソッドjava linked list最初の要素と比較し、peek()メソッドを使用して削除します

LINKLISTクラス:

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()); 
     } 
    } 
} 

この私のコードです。どのようにそれを行うにはどのようなアイデア?

+2

あなたが試したことを示してください。あなたの質問はpeekがあなたのために働いていないと言いますが、私はあなたのコードのどこかを覗いて見ていません。 – nhouser9

+0

あなたは何をしたいのか正確に説明できますか? _peek_関数はどこにも見当たらないので、あなたが何を望んでいるのか分かりません。 – dquijada

+0

PS(少し関係ない):その機能を「表示ノード」に作成するのではなく、ノードの「toString」メソッドをオーバーライドする必要があります。 – dquijada

答えて

1

まずLinkListは外部世界へのパブリックAPIなので、必ずしもノードではなく、LinkListをパラメータ化する必要があります。

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

次に、削除した値を返すことができます。 (removeFirstは空のリストにNullPointerExceptionをスローできます)

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

ありがとうございます。 – Chara

関連する問題