递归实现栈的逆序
/* get 方法获取栈底元素,reversal 方法实现将 get 方法获取的栈底元素再次压如栈中
调用 reversal 方法即可递归实现栈的逆序 */
class ReversalStack {
public:
void reversal(stack<int>& s) {
if (s.empty()) {
return;
}
int i = get(s);
reversal(s);
s.push(i);
}
int get(stack<int>& s) {
int data = s.top();
s.pop();
if (s.empty()) {
return data;
}
else {
int last = get(s);
s.push(data);
return last;
}
}
};
栈元素排序
/* 通过申请一个额外的栈,实现对输入栈(data)栈底到栈顶的从大到小排序 */
class StackSort {
public:
void stackSort(stack<int>& data) {
if (data.empty()) {
return;
}
stack<int> help;
while (!data.empty()) {
int dataTop = data.top();
data.pop();
if (help.empty() || help.top() <= dataTop) {
help.push(dataTop);
}
else {
data.push(help.top());
help.pop();
data.push(dataTop);
}
}
while (!help.empty()) {
data.push(help.top());
help.pop();
}
}
};
如有侵权,请联系删除,如有错误,欢迎大家指正,谢谢