算法笔记(c++)--使用一个辅助栈排列另一个栈
算法笔记(c++)--使用一个辅助栈排列另一个栈
仅仅使用一个辅助栈,不使用其他数据结构来排列一个栈,要求,上大下小。
分析下。肯定是先吧主栈中的数据都放到辅助栈中,在辅助栈中上小下大。
1.首先循环提取主栈中的top,如果辅助栈为空就直接放进去,如果比辅助栈顶小也直接放进去,如果比辅助栈顶大就把辅助站中元素一个个弹到主栈中,直到找到比栈顶小或者栈为空就放进去。
代码如下:
#include<iostream>
#include<queue>
#include<string>
#include<stack>
using namespace std;
void reverse(stack<int>& s)
{
stack<int> temp;
while(!s.empty())
{
int top=s.top();
s.pop();
if(temp.empty())//如果是空直接放进去
temp.push(top);
else if(temp.top()>top)//如果temp.top大也直接放进去
temp.push(top);
else
{
while(!temp.empty()&&temp.top()<top)//注意这里,这里必须要empty在前不然会引发top异常
{
int t=temp.top();
temp.pop();
s.push(t);
}
temp.push(top);
}
}
while(!temp.empty())
{
int mm=temp.top();
temp.pop();
s.push(mm);
}
}
int main()
{
stack<int> a;
for(int i=;i>=;i--)
{
a.push(i);
}
reverse(a);
for(int i=;i>=;i--)
{
cout<<a.top();
a.pop();
}
return ;
}
算法笔记(c++)--使用一个辅助栈排列另一个栈的更多相关文章
- 算法笔记(c++)-使用递归函数逆序一个栈
---恢复内容开始--- 使用递归函数逆序一个栈 题目:使用递归函数,不借助其他数据结构逆序一个栈. 我的思路:使用递归函数保存栈中变量. 递归函数分两个,一个获取并移除栈底元素,另一个负责逆序.其实 ...
- 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...
- 算法笔记-PHP实现栈的操作
[栈]后进先出,先进后出,这就是典型的“栈”结构. 任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险. ...
- 算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...
- kNN算法笔记
kNN算法笔记 标签(空格分隔): 机器学习 kNN是什么 kNN算法是k-NearestNeighbor算法,也就是k邻近算法.是监督学习的一种.所谓监督学习就是有训练数据,训练数据有label标好 ...
- 算法笔记_023:拓扑排序(Java)
目录 1 问题描述 2 解决方案 2.1 基于减治法实现 2.2 基于深度优先查找实现 1 问题描述 给定一个有向图,求取此图的拓扑排序序列. 那么,何为拓扑排序? 定义:将有向图中的顶点以线性方式进 ...
- 算法笔记_018:旅行商问题(Java)
目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 减治法 2.2.1 Johson-Trotter算法 2.2.2 基于字典序的算法 1 问题描述 何为旅行商问题?按照非专业的说法,这个问 ...
- WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化
WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...
- CornerNet-Lite算法笔记
论文名称:CornerNet-Lite: Efficient Keypoint Based Object Detection 论文链接:https://arxiv.org/abs/1904.08900 ...
随机推荐
- Linux Shell常用技巧(八)
十八. 和系统运行状况相关的Shell命令: 1. Linux的实时监测命令(watch): watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动 ...
- 用JavaScript编写简单斗地主效果Es6
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- #leetcode刷题之路47-全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列.示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]] 之前的https://www.cnblogs.com/ ...
- activemq的高级特性:消息持久订阅
activemq的高级特性之消息持久订阅 如果采用topic模式发送的时候,mq关闭了或消费者关闭了.在启动的时候,就会收不到mq发送的消息,所以就会出现消息持久订阅. 消息持久订阅:第一:消息要持久 ...
- mysql/mariadb学习记录——limit
在mysql/mariadb 中可以用limit来限制查询的条数.例子如下: 1.limit后加一个参数 limit n: //选中查询所有结果中的前两条记录并返回 mysql> ; +---- ...
- 100-Days-Of-ML-Code 评注版(Day 1)
Day 1_Data PreProcessing(数据预处理) 本文引用自 Day 1_Data PreProcessing, 对其中内容进行了评注与补充说明. 导入数据 dataset = pd.r ...
- 我的职业规划(android)
通过一段时间的想法,自己大概圈定了自己的未来三年的职业规划,关于android的,希望大家多多批评,多多指教.或者大家也能讨论下自己对于未来的期许或者路线,虽然每个人都有自己自身的情况,但是总会有一些 ...
- python学习之路_字符编码
字符编码及python中的转码问题,这篇博客讲的比较清楚,python 之路,致那些年,我们依然没搞明白的编码
- ACM--移动桌子--贪心--HDOJ 1050--Moving Tables
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Descript ...
- 20155216 2016-2017-2 《Java程序设计》第一周学习总结
教材学习中的问题和解决过程 根据自己的理解,每章提出一个问题 第一章:课本中介绍的JDK安装时在windows系统下的安装,而我们学习的是在Linux系统下的安装,运用Linux系统学习编程(尤其是J ...