博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断元素出栈、入栈顺序的合法性
阅读量:5085 次
发布时间:2019-06-13

本文共 1191 字,大约阅读时间需要 3 分钟。

        输入两个整数序列,第一个整数序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列???   

       解决该问题很直观的想法就是建立一个辅助栈,根据弹出序列知第一个希望被弹出的数字为X,由于压入栈的顺序由压栈序列确定,所以此时应该把压入序列中X之前的 数字都依次压人到辅助栈里面去。如果下一个被弹出的数字刚好是栈顶数字,那么直接将其弹出,如果下一个弹出的数字不在栈顶,我们则把压栈序列中还没有入栈的数字(并且在该弹出数字之前的数字)压入辅助栈,如果所有的压栈序列中数字都遍历了仍然没有找到下一个弹出的数字,那么该序列就不可能是一个弹出序列。

1 #include
2 #include
3 using namespace std; 4 bool Is_Legle( const char *pPush, const char *pPop) 5 { 6 stack
s; 7 if (strlen(pPush) != strlen(pPop)) 8 { 9 return false;10 }11 while (*pPush != '\0')12 {13 if (*pPush != *pPop)14 {15 s.push(*pPush);16 }17 else18 {19 pPop++;20 while (!s.empty() &&s.top() == *pPop)21 {22 s.pop();23 pPop++;24 }25 }26 pPush++;27 }28 if (s.empty() && *pPop == '\0')29 {30 return true;31 }32 else33 {34 return false;35 }36 }37 void main()38 {39 char *dest = "12345";40 char *src = "32415";41 cout << Is_Legle(dest,src);42 system("pause");43 }

 

       

转载于:https://www.cnblogs.com/-zyj/p/5494926.html

你可能感兴趣的文章
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>