如何仅用递归函数和栈操作逆序一个栈
作者:互联网
题目:
解题思路:
记住递归内部就是一个栈,写两个递归就能实现队列,即将12345,入栈之后出栈还是12345。
这里是第一个递归实现获取栈底元素,然后再使用第二个递归,实现反转。
1 /* 递归函数1: 将栈stack的栈底元素返回并移除 */ 2 static int getAndRemoveLastElement(stack<int> data) 3 { 4 int result = data.pop(); 5 if (data.empty() ) 6 { 7 return result; 8 } 9 else 10 { 11 int last = getAndRemoveLastElement(data); 12 data.push(result); 13 return last; 14 } 15 } 16 17 public: 18 /* 递归函数2: 逆序一个栈,就是题目要求实现的方法 */ 19 void reverse( stack<int> data) 20 { 21 if (data.empty() ) 22 { 23 return; 24 } 25 int i = getAndRemoveLastElement(data); 26 reverse(data); 27 data.push(i); 28 }
getAndRemoveLastElement方法在图中简单表示为get方法,表示移除并返回当前栈底元素。
标签:仅用,递归,递归函数,int,getAndRemoveLastElement,栈底,result,data,逆序 来源: https://www.cnblogs.com/Tavi/p/12505452.html