我的任务是在一个单独的类(Stack util的扩展)中创建一个方法,它接受一个堆栈并将其反转(即堆栈是[5,7,10]返回[10,7, 5])。
TEST课程由教授提供,使用我的单独课程及其方法来运行这些命令。
编辑:mwohlf实施的解决方案
代码:
考试班(由教授提供):
public class myStackReverseTEST {
public static void main(String[] args) {
int val;
myStackReverse<Integer> stack = new myStackReverse<Integer>();
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
stack.push(new Integer(5));
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
stack.push(new Integer(10));
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
stack.push(new Integer(7));
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
stack.push(new Integer(10));
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
val = stack.pop();
System.out.println(stack.toString());
System.out.println(stack.toStringReverse());
}
}
我的类使用方法toStringReverse():
import java.util.*;
public class myStackReverse<E> extends Stack<E> {
public String toStringReverse()
{
Stack<E> origStack = (Stack)this.clone();
Stack<E> revStack = new Stack<E>();
while (!origStack.isEmpty())
{
revStack.add(origStack.pop());
}
return revStack.toString();
}
}
旁注:有序列化错误,如果我愿意,我被告知要忽略它,因为它在完成后不会直接影响程序的结果。
答案 0 :(得分:0)
试试这个:
class myStackReverse<E> extends Stack<E> {
public String toStringReverse() {
StringBuilder sb = new StringBuilder();
sb.append("[");
if (this.size() > 0) {
sb.append(this.get(this.size()-1));
}
for (int i = this.size()-2; i>=0; i--) {
sb.append(", ");
sb.append(this.get(i));
}
sb.append("]");
return sb.toString();
}
}
或者如果你想避免克隆使用更少的内存(但代码更多):
All Pages