c++之判断栈的弹出是否合法

来源:互联网 发布:中国网络好声音苏棱然 编辑:程序博客网 时间:2024/04/30 17:32

题目:判断弹栈的顺序是否合法


实现思想:首先输入要判断数据的大小的个数N,在输入压栈的顺序,再输入弹栈的顺序。输入栈的数字用数组保存,弹栈的顺序数字用栈保存。
                   当栈的top为数组的第一个元素时,弹出栈中元素,并删除数组中元素(利用下标实现),如果不是,则从数组当前的第一个位置找,找到该元素时,弹栈并删除数组的该元素以及之前的元素,如果栈中每个元素都能找到在数组中找到,则输入的弹栈顺序正确,否则错误。



代码:


#include <iostream>#include"head.h"using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {myStack a;    int na,nb,nc,life;cin>>na;int b[na];for(int i=0;i<na;i++){cin>>nb;b[i]=nb;}    for(int i=0;i<na;i++){cin>>nc;a.push(nc);}life=1;int minSize=0;while(!a.isEmpty()&&minSize<na){//int minSize=0;if(a.getTop()==b[minSize]){a.pop();minSize++;}else{while(a.getTop()!=b[minSize]){minSize++;if(minSize>=na){life=0;break;    }}}}if(life==1)   cout<<"输入合法";else   cout<<"输入不合法"; return 0;}


0 0
原创粉丝点击