用一个栈实现另一个栈的排序
来源:互联网 发布:室内网络布线 编辑:程序博客网 时间:2024/05/11 08:52
- 背景:
- 一个栈的排序其实是很好做的,但是现在要你将该栈从顶到底从大到小排序,只允许申请一个辅助栈,可以申请有限个变量,除此之外不能再申请额外的数据结构,你该怎么搞?
- 算法:
- 设要排序的栈为
st
,辅助栈为help
,从st
弹出的元素记为cur
,help
的栈顶元素记为top
。 - 如果
cur
小于或等于top
,则将cur
压入help
; - 如果
cur
大于top
,则将help
中的元素逐一弹出并压入st
,直到cur
小于等于top
,再将cur
压入help
。
- 如果
- 一直执行上述操作,直到
st
为空结束,这时再把help
中的元素一一压回st
就行了,算法结束。
- 代码:
#include <bits/stdc++.h>using namespace std;template<class T>void sortStByHelp(stack<T> &st){ stack<T> help; while (!st.empty()) { T cur = st.top(); st.pop(); for (; !help.empty() && cur > help.top(); st.push(help.top()), help.pop()); help.push(cur); } for (; !help.empty(); st.push(help.top()), help.pop());}int main(){ stack<int> st({1, 2, -1, 7, 9, 0}); sortStByHelp(st); for (; !st.empty(); cout << st.top() << endl, st.pop()); return 0;}
阅读全文
0 0
- 【栈】用一个栈来实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 数据结构5 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 1_5用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- C++ 使用一个栈实现另一个栈的排序
- 栈和队列之用一个栈实现另一个栈的排序
- 栈和队列(5)——用一个栈实现对另一个栈的排序
- 1栈和队列--用一个栈实现另一个栈的排序
- 栈和队列——用一个栈实现另一个栈的排序
- 栈和队列 用一个栈实现另一个栈的排序
- 栈和队列---用一个栈实现另一个栈的排序
- 欢迎使用CSDN-markdown编辑器
- 对象、类和实例&&线程与进程
- 爬虫知识一:使用multiprocessing模块创建多进程
- linux常用命令
- 使用Redis SETNX 命令实现分布式锁
- 用一个栈实现另一个栈的排序
- 什么是野指针以及如何避免野指针?
- python学习(2)定时打开网页以及改变文件的名称
- 每天一道算法题——二进制数中1的个数
- [CF刷题]Codeforces Round #443 (Div. 2)
- leetcode练习 Task Scheduler
- 协程设计需要注意的两个小问题及解决
- 自己喜欢的句子总结一
- 源码分析继承Thread和实现Runnable来创建线程