2016-12-03 81 views
0

因此,我想编写一个方法来获取堆栈并递归打印其内容,而不使用任何临时堆栈,并且在方法结束时堆栈将变为空。用于打印堆栈内容的递归方法

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

} 

呃能这样吗?堆栈是空的吗?

+1

听起来很直接,所以我想知道如果我失去了什么。你能分享一个样本栈和你想要得到的结果吗? – Mureinik

+2

堆栈溢出鼓励先尝试自己并提供代码。 – mm759

+0

欢迎来到Stack Overflow!看起来你正在寻求作业帮助。虽然我们本身没有任何问题,但请观察这些[应做和不应该](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),并相应地编辑您的问题。 –

回答

0

你并不真的需要递归从上到下打印栈的内容,它应该看起来像

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); 
    } 
} 
1

创建一个堆栈作为参数和以下实现的方法。取下一个元素并打印出来。将栈传递给方法,除非它是空的。