判断出栈的合法性

0人阅读 评论(0) 收藏 举报
分类:

元素出栈,入栈的合法性。如:入栈序列(12345)出栈为(54321)则合法。出栈为(45231)不合法

#include<iostream>
#include<stack>
#include<assert.h>

using namespace std;
//1.定义一个栈。 
//2.当栈为空时或栈顶元素不等于Out[]中的元素时,将In中元素入栈 
//3.当栈顶元素等于Out[]中元素时,出栈
//4.入栈出栈操作后,栈中的元素全pop()出来了,则是合法的。反之,则是非法的。
bool Outvalid(int* In, int Insize, int* Out, int Outsize)
{
	stack<int> s;
	if (Insize != Outsize)
	{
		return false;
	}

	while (Insize>0)
	{
		if (s.empty() || s.top() != *Out)
		{
			s.push(*(In++));
			--Insize;
		}
		else
		{
			s.pop();
			Out++;
		}
	}
	while (!s.empty())
	{
		if (s.top() != *Out)
		{
			return false;
		}
		s.pop();
		Out++;
	}
	return true;
}
void test()
{
	int In[] = { 1, 2, 3, 4, 5 };
	int Out[] = { 5, 4, 3, 2, 1 };//合法
	//int Out[]={3,2,1,4,5};//合法
	//int Out[] = { 3, 1, 2, 5, 4 };//非法
	cout << Outvalid(In, 5, Out, 5) << endl;
}

查看评论

Web 前端工程师课程 10 周

Web 前端工程师课程介绍 https://edu.csdn.net/topic/web115
  • 2018年02月26日 14:42

判断元素入栈,出栈顺序的合法性

题目要求:元素出栈,入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)合法,入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,1,2)不合法。 ...
  • qq_33417547
  • qq_33417547
  • 2016-09-17 09:51:24
  • 1576

判断出入栈的合法性

本篇博客阐述内容: 通过已给的入栈和出栈序列判断是否匹配(即是否合法) 这其实是个简单的问题,我们不对有重复的情况做考虑; 既然是对出栈顺序进行检测,那很简单,我们让入栈序列入栈 让出栈栈序列去匹配...
  • bitboss
  • bitboss
  • 2016-09-20 08:26:39
  • 1119

出栈序列的合法性

问题描述:对于一个进栈序列其出栈序列存在多种合法的可能情况。例如:入栈序列为1,2,3,4,5时,而对于出栈序列5,4,3,2,1、1,3,2,5,4、3,5,4,2,1等等这些都是一个合法的出栈序列...
  • Xiao__Tian__
  • Xiao__Tian__
  • 2016-04-10 10:51:51
  • 2009

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

判断出栈顺序的合法性      ”栈“是一种限制性线性表,是将线性表的插入、删除操作限制为仅在表的一端进行,一般将能够插入、删除的一端称为栈顶,表的另一端称为栈底。当栈中没有元素时称为空栈。即就是将每...
  • ttyue_123
  • ttyue_123
  • 2016-08-09 21:43:01
  • 672

元素出栈、入栈顺序的合法性

题目如下: 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1) 基本思路:   很直观的一种想法,建立一个辅助栈,把输入的第一个序列中的数字一次压入该辅...
  • LookAtTheStars
  • LookAtTheStars
  • 2016-04-13 15:38:46
  • 1416

【C++】判断顺序栈出栈顺序的合法性

//判断顺序栈出栈顺序的合法性思想: //给定一个入栈的字符串pushstr,再给定一个出栈的字符串popstr,根据栈的特性,判断该出栈顺序是否合法 //1.先验证两个字符串的长度是否相等,不等,则...
  • ZDF0414
  • ZDF0414
  • 2015-11-21 14:41:21
  • 791

【数据结构】判断出栈顺序的合法性

问题简单说明 给定一个栈的入栈顺序,再给定一个出栈顺序,通过程序判断出栈顺序的合法性。 思路如下: 定义一个空栈sc 先将str1中第一个元素入栈,然后通过循环使str1后移。 ...
  • shangguan_1234
  • shangguan_1234
  • 2016-09-16 15:29:47
  • 1000

判断出栈顺序是否合法

自己的代码 #include #include #define StackSize 1000 typedef struct{ int data[StackSize]; ...
  • abeford
  • abeford
  • 2016-11-06 23:46:00
  • 128

剑指offer 22---判断元素出栈、 入栈顺序的合法性

题目: 判断元素出栈、 入栈顺序的合法性。 如: 入栈的序列( 1,2,3,4,5) , 出栈序列为( 4,5,3,2,1) 是合法序列, 入栈的序列( 1,2,3,4,5) , 出栈序列为( 1,...
  • weixin_36125166
  • weixin_36125166
  • 2017-05-12 13:32:41
  • 670
    个人资料
    等级:
    访问量: 2149
    积分: 260
    排名: 29万+