1. 参考左程云大神的书<程序员代码面试指南>
//注意一定需要加上取地址符,这样才是引用,否则stack不会跟着改变.
int getAndRemoveLastElement(stack<int>& st) {
int result = st.top();
st.pop();
if (st.empty()) {
return result;
}
else {
int last = getAndRemoveLastElement(st);
st.push(result);
return last;
}
}
int main() {
stack<int> st;
st.push(4); st.push(2); st.push(3);
int res = getAndRemoveLastElement(st);
cout << res << endl;
cin.get();
return 0;
}
//注意一定需要加上取地址符,这样才是引用,否则stack不会跟着改变.
void reverse(stack<int>& st) {
if (st.empty())
return;
int i = getAndRemoveLastElement(st);
reverse(st);
st.push(i);
}
int main() {
stack<int> st;
st.push(10); st.push(2); st.push(3);
cout << st.top() << endl;
/*int res = getAndRemoveLastElement(st);
cout << st.size() << endl;*/
reverse(st);
cout << st.top() << endl;
cin.get();
return 0;
}