,所以我想编写一种堆叠的方法,并在不使用任何临时堆栈的情况下递归打印其内容,并且在方法的末尾堆栈将变为空。
关于如何开始的想法?:S
public static void main(String[] args) {
Stack <Integer> IntegersStack = new Stack <Integer>();
IntegersStack.push(1);
printStack(IntegersStack);
IntegersStack.push(2);
printStack(IntegersStack);
IntegersStack.push(3);
printStack(IntegersStack);
//now to prepare for prinitng
IntegersStack.pop();
printStack(IntegersStack);
IntegersStack.pop();
printStack(IntegersStack);
IntegersStack.pop();
printStack(IntegersStack);
}
public static void stackRecursive(Stack <Integer> ps) {
if (ps.isEmpty()){
System.out.println("Sorry stack is empty");
} else {
System.out.printf("%d",ps);
}
}
}
eh可以工作吗?堆栈会空吗?
用堆栈作为参数和以下实现创建一个方法。取下一个元素并打印。除非为空,否则将堆栈传递到该方法。
您实际上不需要递归即可打印从上到下的堆栈的内容,它应该看起来像
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
如果要从下到顶部打印它,则可以尝试这种递归方法:
private void printStack(Stack<Integer> stack) {
if (stack.isEmpty()) {
return;
} else {
int i = stack.pop();
printStack(stack);
System.out.println(i);
}
}