栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构OJ--入栈、出栈序列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构OJ--入栈、出栈序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

  1. 0<=pushV.length == popV.length <=1000
  2. -1000<=pushV[i]<=1000
  3. pushV 的所有数字均不相同

输入

输入2个序列,先输入入栈序列,再输入出栈序列。

输出

输出是否存在这种出栈序列。

输入样例 1 

1 2 3 4 5
4 5 3 2 1

输出样例 1

true

解题思路: 按照输入入栈顺序进行入栈操作,同时取其栈顶元素与出栈序列元素进行比对,若符合则将其出栈,若不符则继续入栈,直至出栈序列读取完,若栈空则true,否则false。

#include
#include
#include
#define maxsize 1000
using namespace std;
typedef struct{
	int * top;
	int * base;
}sqstack;
void initstack(sqstack &s){
	s.base=new int[maxsize];
	s.top=s.base;
}
void push(sqstack &s,int n){
	*s.top++=n;
}
void pop(sqstack &s){
	s.top-=1;
}
int gettop(sqstack s){
	return *(s.top-1);
}
int main(){
	sqstack s;
	initstack(s);
	int in[maxsize],out[maxsize];
	int i,n,a,count=0,temp=1;
	while(1){	
      in[count]=getchar();
		count++;
		if(getchar()=='n' ) 
		{
			break;
		}
	}
	count=0;
	while(1){
      out[count]=getchar();
		count++;
		if(getchar()=='n') 
		{
			break;
		}
	}
	n=0;
	i=0;int j=0;
	for(;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号