/*
29.栈的 push、pop 序列
题目:输入两个整数序列。其中一个序列表示栈的 push 顺序,
61
判断另一个序列有没有可能是对应的 pop 顺序。
为了简单起见,我们假设 push 序列的任意两个整数都是不相等的。
比如输入的 push 序列是 1、2、3、4、5,那么 4、5、3、2、1 就有可能是一个 pop 系列。
因为可以有如下的 push 和 pop 序列:
push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
这样得到的 pop 序列就是 4、5、3、2、1。
但序列 4、3、5、1、2 就不可能是 push 序列 1、2、3、4、5 的 pop 序列。
相同就出栈 ,否则进栈
*/
#include<iostream>
#include<stack>
#include<stdio.h>
using namespace std;
int isPop(int push[],int pop[],int n)
{
stack<int> ss;
int i1=0,i2=0;
while(i2<n)
{
if(ss.empty()||()!=pop[i2])
{
if(i1<n)
{
printf("Push:%d\n",push[i1]);
ss.push(push[i1++]);
}
else
return 0;
}
while(!ss.empty()&&()==pop[i2])
{
printf("POP:%d\n",());
ss.pop();
i2++;
}
}
return 1;
}
int main()
{
int push1[5]={1,2,3,4,5};
int pop1[5]={4,5,3,2,1};
int pop2[5]={1,2,4,3,5};
int pop3[5]={1,4,5,2,3};
if(isPop(push1,pop1,5)==1)
printf("YES\n");
else
printf("No\n");
if(isPop(push1,pop2,5)==1)
printf("YES\n");
else
printf("No\n");
if(isPop(push1,pop3,5)==1)
printf("YES\n");
else
printf("No\n");
return 0;
}
29 栈的 push、pop 序列
原创
©著作权归作者所有:来自51CTO博客作者我想有个名字的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:28 整数的二进制表示中1的个数
下一篇:30 1到n的正数中1出现的次数
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
一场关于栈的面试----最小栈的实现
一场关于栈的面试----最小栈的实现
最小值 出栈 入栈 -
40_1 栈结构,满足min,push,pop
ush的元素是否小于或等于minimum stack栈顶元素。如果是,则也
#include ios 出栈 -
Java stack pop push用法 java实现栈的push和pop
目录 一、什么是栈,什么是队列? 二、自己实现栈 三、自己实现队 &n
队列 链表 数据结构 java 出队 -
图观 流渲染打包服务器
图观流渲染场景打包服务器支持自动编译、打包、版本管理及多任务调度,提升场景发布效率。
#服务器 #前端 #github #数据可视化 服务器
















