使用 Vector<E> 实现 Stack<E>
Implementing a Stack<E> using Vector<E>
我正在按以下方式使用堆栈...我在第 26 行遇到问题:
import java.util.Vector;
public class Stack<E> {
private Vector <E> v=new Vector <E>(1);
public int getSize() {
return v.size();
}
public boolean isEmpty() {
return (v.isEmpty());
}
public E getTop() {
return v.lastElement();
}
public E pop() {
E p;
if (!isEmpty()) {
p = v.lastElement();
v.remove(v.size() - 1);
}
/*return p; what to do here?? when stack is empty how to return and what to?* /
}
public void push(E p) {
v.add(p);
}
}
一种方法虽然不是很推荐,但是return null:
public E pop() {
E p = null;
if (!isEmpty()) {
p = v.lastElement();
v.remove(v.size() - 1);
}
return p;
如果您可以为将在堆栈中使用的类型提供默认构造函数,以便您可以事后检查对象是否有效,那就更好了。
E p = new E(); // invalid object
您可能想查看 Null Object Pattern,其中提供了更多相关信息。
我正在按以下方式使用堆栈...我在第 26 行遇到问题:
import java.util.Vector;
public class Stack<E> {
private Vector <E> v=new Vector <E>(1);
public int getSize() {
return v.size();
}
public boolean isEmpty() {
return (v.isEmpty());
}
public E getTop() {
return v.lastElement();
}
public E pop() {
E p;
if (!isEmpty()) {
p = v.lastElement();
v.remove(v.size() - 1);
}
/*return p; what to do here?? when stack is empty how to return and what to?* /
}
public void push(E p) {
v.add(p);
}
}
一种方法虽然不是很推荐,但是return null:
public E pop() {
E p = null;
if (!isEmpty()) {
p = v.lastElement();
v.remove(v.size() - 1);
}
return p;
如果您可以为将在堆栈中使用的类型提供默认构造函数,以便您可以事后检查对象是否有效,那就更好了。
E p = new E(); // invalid object
您可能想查看 Null Object Pattern,其中提供了更多相关信息。