我是靠谱客的博主 大意冬日,最近开发中收集的这篇文章主要介绍C++经典案例:给定出栈序列判定是否合法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:

        对于给定入栈序列,不同的入栈出栈操作顺序,会产生不同的出栈序列,现给定出栈序列,判定其是否合法。

输入范例:

5 12345 54312,第一个数表示序列总数,第二个第三个分别表示入栈和出栈序列

期望输出:

判断出栈序列是否合法,输出合法,或者不合法。

示例代码:

#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
int main()
{
int total;
string instr, outstr;
stack<int> s;
ifstream fin;
fin.open("sequence.txt");
fin >> total;
fin >> instr;
fin >> outstr;
vector<int> vin, vout;
for(int i = 0; i < instr.size(); i++)//设置入栈序列
{
int num = instr[i] - '0';
vin.push_back(num);
}
for(int i = 0; i < outstr.size(); i++)//设置出栈序列
{
int num = outstr[i] - '0';
vout.push_back(num);
}
int i = 0, j = 0;
for(; i < total; i++)
{
s.push(vin[i]);
while(!s.empty() && s.top() == vout[j])
{
s.pop();
j++;
}
}
if(i == j)
{
cout << "出栈序列合法" << endl;
}
else
{
cout << "出栈序列不合法" << endl;
}
return 0;
}

 

最后

以上就是大意冬日为你收集整理的C++经典案例:给定出栈序列判定是否合法的全部内容,希望文章能够帮你解决C++经典案例:给定出栈序列判定是否合法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部