题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序

解:其实这题主要是判断进栈次数和出栈次数誓不是相等。我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此,所以最多进行2n次操作,然后每次对栈顶元素和pb指针指向的元素进行比较(因为假设序列中整数都不相等)

代码:

/*
判断栈push和pop顺序是否符合
push中的元素顺序入栈,如果等于pb指向的元素,那么循环出栈,知道栈空或者pb元素和栈顶元素不一样,如果一样,出栈且pb++,总共的入栈出栈次数最多是2*n次
*/ #include<iostream>
using namespace std;
#define MAX 50 typedef struct
{
int data[MAX];
int top;
}Stack; Stack* create_stack(void)
{
Stack* s=new Stack;
if(s)
s->top=-; return s;
} bool empty_stack(Stack* s)
{
if(-==s->top)
return true;
return false;
} bool full_stack(Stack* s)
{
if(MAX-==s->top)
return true;
return false;
} void push_stack(Stack* s,int value)
{
if(full_stack(s))
return ;
s->top++;
s->data[s->top]=value;
} int pop_stack(Stack* s)
{
if(empty_stack(s))
return -;
int temp=s->data[s->top];
s->top--;
return temp;
} int get_stack(Stack* s)
{
if(empty_stack(s))
return -;
return s->data[s->top];
} void free_stack(Stack* s)
{
if(s)
{
delete s;
s=NULL;
}
} bool satisfy(int *a,int *b,int n)
{
int i=;
int pa,pb;
Stack* s; pa=;
pb=;
s=create_stack();
while(i++<*n)
{
if(pa==n && pb==n)
break;
if(pa<n)
{
push_stack(s,a[pa]);
pa++;
} while(!empty_stack(s) && get_stack(s)==b[pb])
{
pop_stack(s);
pb++;
}
} bool flag;
if(empty_stack(s) && pb==n)
flag=true;
else
flag=false;
free_stack(s); return flag; } int main(void)
{
int a[MAX];
int b[MAX];
int n,i; cin>>n; for(i=;i<n;i++)
cin>>a[i];
for(i=;i<n;i++)
cin>>b[i]; cout<<boolalpha;
cout<<satisfy(a,b,n)<<endl; return ;
}

29. 栈的push,pop序列的更多相关文章

  1. 数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)

    普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间. 题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个 ...

  2. 【编程题目】栈的 push、pop 序列

    29.栈的 push.pop 序列(栈)题目:输入两个整数序列.其中一个序列表示栈的 push 顺序,判断另一个序列有没有可能是对应的 pop 顺序.为了简单起见,我们假设 push 序列的任意两个整 ...

  3. 24.栈的push和pop序列[StackPushPopSequence]

    [题目] 输入两个整数序列.其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序.为了简单起见,我们假设push序列的任意两个整数都是不相等的. 比如输入的push序列是1.2 ...

  4. 第29题:推断一个序列是否是还有一个push序列的pop序列

    github:https://github.com/frank-cq/MyTest 第29题:输入两个整数序列,当中一个序列表示栈的push顺序,推断还有一个序列有没有可能是相应的pop顺序.为了简单 ...

  5. Swift处理堆栈问题——给定两组序列,其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序

    题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的.比如输入的push 序列是1. ...

  6. (栈)栈 给定push序列,判断给定序列是否是pop序列

    题目: 输入两个整数序列.其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序.为了简单起见,我们假设push序列的任意两个整数都是不相等的. 比如输入的push序列是1.2. ...

  7. 每天一道算法题(11)——栈的push、pop 序列

    题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的. 例如:输入的push 序列是 ...

  8. 栈的push、pop序列 【微软面试100题 第二十九题】

    题目要求: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1是该压栈 ...

  9. 笔试算法题(14):整数二进制表示中的1 & 判定栈的push和pop序列是否对应

    出题:输入一个整数,要求计算此整数的二进制表示中1的个数 分析: 如果整数表示为k,当其是负数的时候,使用1<<i分别检测k的每一位:当其位整数的时候,则k/2表示将其二进制表示右移一位, ...

随机推荐

  1. 如何在Mac下使用TF/SD 卡制作Exynos 4412 u-boot启动盘

    /** ****************************************************************************** * @author    Maox ...

  2. silverlight将字符串转化为控件

    silverlight的System.Windows.Markup命名空间下,提供了XamlReader.Load()方法可以将字符串转换为控件. 代码 StringBuilder sbGrid = ...

  3. How to force to Fullscreen Form

    Is it possibile by code resize a form to fullscreen? (like button Maximize) ? // VAR Changed on 10 J ...

  4. html onclick 传参数

    <a id="j-im" class="jd-im btn-gray gys-im" href="javascript:(0);" o ...

  5. c语言编程之队列(链表实现)

    用链表实现了队列,完成了队列的入队和出队功能. #include"stdio.h" typedef int element; typedef struct Node{ struct ...

  6. (转)使用 /proc 文件系统来访问 Linux 内核的内容

    转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...

  7. as3.0服务端FMS软件常用的方法与属性参考示例

    转自:http://www.cuplayer.com/player/PlayerCode/RTMP/2012/0918429.html Application类的方法汇总方法 描述Applicatio ...

  8. linux_fedora nexus_auto_start

      fedora20发布,不对rc.local支持,其实只是删除了rc.local文件,如果想在开机时能够运行自己写的脚本,只要新建rc.local文件就可以了,下面让我们来测试下吧: 环境:fedo ...

  9. CI_Autocomplete_2.0.php轻松实现Bebeans与Codeigniter的智能提示

    在你的NetBeans项目下建立一个CI_Autocomplete_2.0.php的文件,粘贴以下代码:(codeigniter太旧了,其实性能不行,应该没人更了,换了吧,别学这玩意了,坑人) < ...

  10. 【HDOJ】【4405】Aeroplane chess飞行棋

    概率DP/数学期望 kuangbin总结中的第4题 啊还是求期望嘛……(话说Aeroplane chess这个翻译怎么有种chinglish的赶脚……) 好像有点感觉了…… 首先不考虑直飞的情况: f ...