私は、スタッククラスを使用して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であるジェネリック型を使用しなければなりません。
はdata
とnext
プライベートを作成し、ゲッターに
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;
}
}
を追加あなたに
をエラーはあなたを教えしようとしているとして、あなたはそのフィールドを返すようにしようとしています存在しません。 – SLaks
ノードのソースコードが必要です。 [mcve]をご覧ください。 – GhostCat
'Node'は 'val'メンバーを持っていません。どのようにそれにアクセスすると思いますか? –
Guy