这道题不管是面试还是笔试的选择题都非常爱出的一道题
题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,5,2,3,1就不可能是该压栈序列的弹出序列。
输入:
每个测试案例包括3行:
第一行为1个整数n(1<=n<=100000),表示序列的长度。
第二行包含n个整数,表示栈的压入顺序。
第三行包含n个整数,表示栈的弹出顺序。
输出:
对应每个测试案例,如果第二个序列是第一个序列的弹出序列输出压栈弹栈顺序,否则输出这不可能
 1 string Judge(int n_values, int input [],int output[])
 2 {
 3                  assert(input && output && n_values > 0);
 4                  Stack<int ,100> s1;
 5                  string result;
 6                 s1.Push( input[0]);//为了防止数组越界访问造成崩溃,先将第一个数压栈开辟好数组空间
 7                 result.append(1, 'R');//因为有入栈操作
 8                  int out = 0;
 9                  int in = 1;//因为有入栈操作,所以入栈数组计数加1
10                  while (out < n_values )//循环结束条件是完美的匹配了出栈顺序,出栈计数到达出栈数组末尾
11                 {
12                                  if (in > n_values )//如果入栈计数先到达入栈数组末尾,证明没有数可以再入栈,但此时出栈数组还没走完,说明这个出栈顺序根本不可能完成
13                                 {
14                                                 result = "这不可能!" ;
15                                                  return result;
16                                 }
17                                  if (s1.Top() == output [out])
18                                 {
19                                                 s1.Pop();//当前栈顶元素恰好和出栈顺序的一样,赶紧出栈
20                                                 result.append(1, 'C');
21                                                 out++;
22                                 }
23                                  else
24                                 {
25                                                 s1.Push( input[in]);//栈顶元素和出栈数组的当前指向不一致,只能继续入栈
26                                                 result.append(1, 'R');
27                                                 in++;
28                                 }
29                 }
30                  return result;
31 }
32  

根据入栈顺序判断出栈顺序的合法性相关推荐

  1. 根据入栈顺序判断出栈顺序是否合理

    def is_pop_order(push, pop):"""根据入栈顺序判断出栈顺序是否合理:param push: 入栈顺序:param pop: 出栈顺序:retu ...

  2. 判断出栈顺序是否正确

    先说一下题目: 假设有一个栈S,每次我们可以把序列A(含N个元素)中的第一个元素移入栈S,也可以是从栈顶弹出一个元素放入出栈序列B.这 样,经过N次入栈和出栈操作后,我们可以得到一个出栈序列B. 现在 ...

  3. 判断出栈顺序的合法性(面试题)

    判断出栈顺序的合法性 "栈"是一种限制性线性表,是将线性表的插入.删除操作限制为仅在表的一端进行,一般将能够插入.删除的一端称为栈顶,表的另一端称为栈底.当栈中没有元素时称为空栈. ...

  4. 【PAT甲】1051 Pop Sequence (25分)判断出栈顺序的合法性

    problem 1051 Pop Sequence (25分) Given a stack which can keep M numbers at most. Push N numbers in th ...

  5. 判断出栈顺序合法性的两种方法

    文章目录 今天偶然看到一个面试题, 题目是这样的: 给我们两个序列,第一个序列表示栈的压入顺序,然后让判断第二个序列是不是是否是该栈的弹出序列 现设第一个序列为[1,2,3,4,5],第二个序列为[3 ...

  6. java判断出栈顺序,java判断出栈顺序是否正确

    java判断出栈顺序是否正确 我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或 ...

  7. 给定入栈序列,判断出栈序列是否合法

    题目:分别给定入栈序列和出栈序列,然后判断出栈序列是否合法.如入栈序列是[1,3,2,4,5],出栈序列[3,1,2,4,5]是合法的,[3,1,5,2,4]是不合法的. 思路: 判断出栈序列是否合法 ...

  8. 判断出栈序列合法性(c语言)

    判断出栈序列合法性 描述 格式 样例 题解及注释 描述 有1.2.3.4.5.6.7这7个数字依次全部入栈后再出栈,在入栈的过程中栈中的数据也可以随时出栈,一直到整个栈为空.将出栈得到的数字依次排列, ...

  9. 数据结构实验之栈七:出栈序列判定

    题目描述 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列. 例如序列 ...

最新文章

  1. java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时
  2. 曝光 Facebook 内部高效工作 PPT 指南
  3. PHP封装对象名字的思路
  4. LeetCode 60. 第k个排列(回溯 康托展开)
  5. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节1:I/O设备的概念和分类
  6. 计算机科学与技术文科可以学么,文科生成绩一般,大学可以选择计算机吗?
  7. Access-Control-Allow-Origin跨域问题的报错以及解决
  8. 【bzoj 3531】 [Sdoi2014]旅行(树链剖分+树套树)
  9. 走进C++程序世界-----函数相关(全局变量)
  10. Django访问静态资源
  11. 好用的码字软件,年入百万的大神作家们都在用
  12. php laravel mix,Laravel前端工程化之mix
  13. 7个实用方法,让你稳步提升记忆!
  14. 查看windows服务器型号,windows 查看服务器型号
  15. termios程序范例
  16. 关于.Net MAUI
  17. zookeeper入门到实战-阶段二(常用命令的使用)
  18. 领导管理团队的3个正确方法
  19. 重磅:2018逐浪字库样本发布
  20. mysql 基础命令进阶

热门文章

  1. 幼儿英语课前热身小游戏
  2. android 输入日语 外键盘,日语外来语怎么用键盘输入
  3. 采用DAWG方式在大批量字符串中查询字符串
  4. 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
  5. http 请求包含哪几个部分,分别有何作用?
  6. Git详细使用大全- rebase, merge, switch, cherry-pick, tag
  7. 在TCP端口筛选只允
  8. 怪物猎人世界服务器小程序,坚守的猎人的最后礼物? 腾讯推出《怪物猎人世界》官方小程序...
  9. 索罗斯:国际银行家的金融黑客
  10. 使用Postman访问k8s RESTful API