Python:如何仅用递归函数和栈操作逆序一个栈
生活随笔
收集整理的這篇文章主要介紹了
Python:如何仅用递归函数和栈操作逆序一个栈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 如何僅用遞歸函數和棧操作逆序一個棧
- 題目:
- 一個棧依次壓入1,2,3,4,5,那么從棧頂到棧底分別為5,4,3,2,1。
- 將這個棧轉置后,從棧頂到棧底為1,2,3,4,5,也就是實現棧中元素的逆序,
- 但是只能用遞歸函數來實現,不能用其他數據結構。
方法一:
既然是遞歸,第一反應是采用兩個棧實現該功能實現,依次彈出棧頂元素,然后壓入另外一個棧中,代碼如下:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import java.util.Stack;public class StackReverse0 {private Stack<Integer> stack0;private Stack<Integer> stack1;public StackReverse0(){stack0 = new Stack<Integer>();stack1 = new Stack<Integer>();}public void getLastElement(){Integer pop = stack0.pop();stack1.push(pop);if(!stack0.isEmpty())getLastElement();}public static void main(String[] args) {StackReverse0 sr = new StackReverse0();sr.stack0.add(1);sr.stack0.add(2);sr.stack0.add(3);sr.stack0.add(4);sr.stack0.add(5);sr.getLastElement();System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());} }方法2:類似兩個stack的思路,不過是使用一個stack搞定。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import java.util.Stack; public class StackReverse {public static int getAndRemoveLastElement(Stack<Integer> stack){ //負責刪除stack bottom的一個元素,并返回int result = stack.pop();if(stack.isEmpty()){return result;}else{int last = getAndRemoveLastElement(stack);stack.push(result); // stack還原return last;}}public static void reverse(Stack<Integer> stack){if(stack.isEmpty()){return;}int i = getAndRemoveLastElement(stack);reverse(stack);stack.push(i); // 效果就是依次將stack top的元素入棧,最后效果就是stack元素逆序}public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);reverse(stack);System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());} }總結
以上是生活随笔為你收集整理的Python:如何仅用递归函数和栈操作逆序一个栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python内置的heapq模块的使用
- 下一篇: 如何保护你的 Python 代码—— 定