用于打印堆栈内容的递归方法



,所以我想编写一种堆叠的方法,并在不使用任何临时堆栈的情况下递归打印其内容,并且在方法的末尾堆栈将变为空。

关于如何开始的想法?: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);
    }
}

最新更新