我在實施麻煩stack
通過single linked list
:通過單鏈表實現棧
以下是我正在實現該接口:
public interface Stack<E> {
/**
* element at the top without removing it
*/
public E peek();
/**
* pop from the stack
*/
public void pop();
/**
* insert into the stack
*/
public void push(E e);
/**
* isEmpty
*/
public boolean isEmpty();
/**
* size
*/
public int size();
/**
* reverse
*/
public Stack<E> reverse();
}
,這裏是我的實現:
public class ListStack<E> implements Stack<E> {
private static class Node<T> {
private T item;
private Node<T> next;
private Node(T item, Node<T> next) {
this.item = item;
this.next = next;
}
}
private Node<E> first;
private int size;
public ListStack() {
this.size = 0;
this.first = null;
}
@Override
public E peek() {
return first.item;
}
@Override
public void pop() {
first = first.next;
size--;
}
@Override
public void push(E e) {
Node<E> node = new Node<E>(e, first);
first = node;
size++;
}
@Override
public boolean isEmpty() {
return (first == null);
}
@Override
public int size() {
return size;
}
@Override
public Stack<E> reverse() {
}
}
我正在努力與reverse
方法,我不知道如果我編程這個權利。
任何幫助將不勝感激!
你能給我們一個輸入和錯誤輸出的例子,以及所需的輸出嗎?或者解釋反向方法是如何搞砸的。 –
@JonnyHenly其實我只是注意到,對於插入的任何類型的數據,堆棧總是空,所以也許有什麼地方是錯誤的,我只是不知道在哪裏 – laker001
看看你的流行方法,如果它不設置臨時變量保持E,然後設置第一個等於next,然後返回臨時E? –