本文共 852 字,大约阅读时间需要 2 分钟。
要求将栈中元素反转,只能使用本身的pop操作和递归函数
class StackReverse { int getStackBottomElement(stack &s){//返回栈底元素并移除栈底元素 int x = s.top(); s.pop(); if(s.empty()) return x; else{ int y = getStackBottomElement(s); s.push(x); return y; } } void reverseStack(stack &s){ if(s.empty()) return; else{ int x = getStackBottomElement(s); reverseStack(s); s.push(x); } }public: vector reverseStack(vector A, int n) {//A中元素为栈中元素序列.A[0]为栈顶,A[n-1]为栈底. stack s; for (int i=n-1; i>=0; --i) { s.push(A[i]); } reverseStack(s); vector ans; while (!s.empty()) { ans.push_back(s.top()); s.pop(); } return ans; }};
转载地址:http://ahhji.baihongyu.com/