Java教程

判断出栈是否合法的算法

本文主要是介绍判断出栈是否合法的算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

顺序栈相关算法1

    • 题目 :
    • 算法思路:
    • 算法:

题目 :

假设输入序列是1.2.....n, 设计一个算法判断通过一个站能否得到由a【0.....n-1】指定出栈序列。
(e.g. n=3,a[]={2,3,1} 合法。;a[]={3,1,2}不合法。

算法思路:

k扫描a(k从0开始)i=1到n循环
{ 进栈i;
while(a[k]=i)
{出栈i,k++}
}
若栈空返回true;否则返回false;

算法:

bool Validseq(int a[],int n)
{
	int i,e,k=0;						//k扫描a的元素
	bool flag;
	SqStack *st;
	InitStack(st);
	for(i=1;i<=n;i++)					//处理输入序列
	{	Push(st,i);						//i进栈
		while(!StackEmpty(st))			//栈不空,循环
		{	GetTop(st,e);				//取栈顶元素
			if(a[k] == e)				//匹配情况
			{	Pop(st,e);
				k++;
			}
			else
				break;					//不匹配退出循环
		}
	}
	flag = StackEmpty(st);
	DesttoryStack(st);
	return flag;
}
这篇关于判断出栈是否合法的算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!