2017-07-02 21 views
-4

私は、スタッククラスを使用してpeekメソッドを完了しようとしています。私は一番上の要素の値を返そうとしています。ノード型の値を返すにはどうすればよいですか?

public class stack<T> implements StackInt<T> 
{ 
    Node<T> root;  
    public boolean isEmpty() 
    { 
     Node<T> top = root; 
     if(top == null) 
     { 
      return true; 
     } 
     return false; 
    } 

public T peek() throws EmptyStackException 
    { 
     Node<T> top = root; 
     if(isEmpty()) 
     { 
      throw new EmptyStackException("stack underflow"); 
     } 
     return top.val; 
    } 
} 

私はそれは私にエラーを与えてコンパイルすると:ここ

stack.java:34: error: cannot find symbol 
     return top.val; 
       ^
    symbol: variable val 
    location: variable top of type Node<T> 
    where T is a type-variable: 
    T extends Object declared in class stack 

は、Nodeクラスです:

public class Node<T> 
{ 
    T data; 
    Node<T> next; 

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

    public String toString() 
    { 
     return "" + this.data; 
    } 
} 

私の構文でエラーとは何ですか? peek/push/popメソッドを作成するためにノードを使用しようとしています。しかし、私はコード内でTであるジェネリック型を使用しなければなりません。

datanextプライベートを作成し、ゲッターに

public class Node<T> { 
    private T data; 
    private Node<T> next; 

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

    public T getData() { 
     return this.data; 
    } 

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

    public String toString() { 
     return "" + this.data; 
    } 
} 

を追加あなたに

+2

をエラーはあなたを教えしようとしているとして、あなたはそのフィールドを返すようにしようとしています存在しません。 – SLaks

+0

ノードのソースコードが必要です。 [mcve]をご覧ください。 – GhostCat

+3

'Node 'は 'val'メンバーを持っていません。どのようにそれにアクセスすると思いますか? – Guy

答えて

1

ありがとうござい用途:top.getData();

+0

ありがとう、私は完全に私のクラスの構造を誤解した。私がやったことややったことは意味があります。 – nitric0

関連する問題