如何仅用递归函数和栈操作逆序一个栈

来源:互联网 发布:刘雯的人品怎么样知乎 编辑:程序博客网 时间:2024/06/04 20:09
#include <iostream>#include <vector>#include<string>#include<algorithm>#include<stack>using namespace std;int getLastElement(stack<int> &s) {    int result = s.top();    s.pop();    if (s.empty()) return result;    // 如果只有一个元素即为栈底的元素 返回      else {        int last = getLastElement(s);   // 得到栈底元素          s.push(result);   // 并栈顶元素压栈          return last;    }}void reverseStack(stack<int> &s) {    if (s.empty()) return;    // 递归结束的终止条件      int i = getLastElement(s);   // 得到栈底的最后一个元素 剩下元素依旧      reverseStack(s);    // reverse 剩下      s.push(i);  // 将i push进去  }int main() {    stack<int> st;    st.push(1); st.push(2); st.push(3);     reverseStack(st);    for (int i = 0; i < 3; i++) {        cout << st.top() << endl;        st.pop();    }}
0 0
原创粉丝点击