基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
来源:互联网 发布:mysql的left方法 编辑:程序博客网 时间:2024/06/06 01:30
题目
解决代码及点评
/*判断某个序列是否出栈序列,比如 4 3 5 2 1,是1,2,3,4,5的出栈序列解决方法:使用栈数据结构,第一个栈存原始数据1,2,3,4,5,第二个栈是活动栈第三个栈保存 4,3,5,2,1做法是通过将原始数据栈往活动栈丢,没丢一次判断活动栈顶和第三个栈顶数据是否相同,如果相同则都弹出当第三个栈空了时,说明成功当第一个栈空了,依旧没能匹配到和第三个栈顶相同的元素时,说明失败*/#include <iostream>#include <stack>using namespace std;// 栈类class Stack{public:int* _data; // 数据int _size; // 数据大小int _top; // 栈顶元素// 构造函数,初始化成员变量Stack(int size = 10) :_data(NULL), _size(size), _top(0){if (_size > 0){_data = new int[_size];}}// 析构函数,释放内存~Stack(){if (_data) delete[]_data;}// 弹出void pop(){if (_top > 0) --_top;}// 压栈void push(int data){_data[_top++] = data;}// 获取栈顶元素int top(){return _data[_top - 1];}// 判断栈是否为空bool empty(){return _top == 0;}};Stack readyToPush; // 第一个栈,保存 1,2,3,4,5数据Stack Push;// 第二个活动栈Stack Pop;// 第三个待判断序列int main(){// 构造第一个栈for (int i = 1; i <= 5; i++){readyToPush.push(6 - i); /* push 5, 4, 3, 2, 1 to Stack */}// 构造第三个栈Pop.push(1);Pop.push(2);Pop.push(3);Pop.push(5);Pop.push(4);// 判断算法for (;;){// 将数据送一个到活动栈if (!readyToPush.empty()){Push.push(readyToPush.top());readyToPush.pop();}// 如果没数据可送,那么说明失败了else{cout << "Error" << endl;break;}// 看活动栈顶,是否等于第三个栈栈顶if (Push.top() == Pop.top()){// 如果相等,则以其弹出Push.pop();Pop.pop();// 如果第三个栈弹空了,说明判断结束,并且结果是对的if (Pop.empty()){cout << "OK" << endl;break;}}}system("pause");return 0;}
代码下载及其运行
代码下载地址:http://download.csdn.net/detail/yincheng01/6704519
解压密码:c.itcast.cn
下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:
1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”
2)在下拉框中选择相应项目,项目名和博客编号一致
3)点击“本地Windows调试器”运行
程序运行结果
0 0
- 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
- 基于visual Studio2013解决面试题之0203栈实现
- 基于visual Studio2013解决面试题之0703翻转栈
- java判断一个序列是否可能是另外一个压栈序列的弹出序列
- 基于visual Studio2013解决面试题之0704判断牌是否顺子
- 基于visual Studio2013解决面试题之1006判断升序
- 基于visual Studio2013解决面试题之0208二叉搜索树后序遍历序列
- 基于visual Studio2013解决面试题之0309左移递减序列搜索
- 基于visual Studio2013解决面试题之0201二叉树转链表
- 基于visual Studio2013解决面试题之0205查找路径
- 基于visual Studio2013解决面试题之0207单词翻转
- 基于visual Studio2013解决面试题之0202上下排
- 基于visual Studio2013解决面试题之0301累加
- 基于visual Studio2013解决面试题之0303数组求和
- 基于visual Studio2013解决面试题之0308Fibonacci数列
- 基于visual Studio2013解决面试题之0403串联字符串
- 基于visual Studio2013解决面试题之0407数组差
- 基于visual Studio2013解决面试题之0501上台阶
- 黑马程序员_WPF(菜单Menu与DockPanel,Toolbar,多窗体,Openfiledalog 与Savefiledalog,自己编写代码进行加载图片)
- 利用python爬取教务系统中成绩
- android apk防反编译及数字签名
- Android Dialog背景全透明无边框 Theme Style
- android-下拉通知栏日期显示
- 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
- 使用easyui在ie浏览器下,treegrid,datagrid加载数据很慢,ie浏览器卡住原因
- lua加载文件 读取数据到C
- DES 算法 信息论与编码
- The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
- Python学习笔记(六)----Python条件语句
- Linux系统基础学习之shell及常用命令(二)
- 购物
- 基础的快速排序