假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。

①下面所示的序列中哪些是合法的?

A. IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO

②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

#include
#include
#include
using namespace std;
bool Judge()
{
	int k;
	for(int i=0;i++)
	{
		if(a[i]=='I')
		k++;
		if(a[i]=='O'){
			if(k==0||k<0))
			{
				return false;
			}
			k--;
		}
	}
	if(k==0)
	return true;
	else
	return false;
}
int main()
{
	
}

你可能感兴趣的:(数据结构,算法)