栈在括号匹配中的应用

Posted -slz-2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈在括号匹配中的应用相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#define MaxSize 10
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int top;
}SList;
void InitSList(SList &S)
{
	S.top=-1;
}
bool IsEmpty(SList S)
{
	if(S.top==-1)
		return true;
	return false;
}
void Push(SList &S,ElemType e)
{
	if(S.top==MaxSize-1)
		return ;
	S.data[++S.top]=e;
}
void Pop(SList &S,ElemType &e)
{
	if(S.top==-1)
		return ;
	e=S.data[S.top--];
}
bool Check(ElemType str[],int length)
{
	SList S;		//创建一个栈
	InitSList(S);	//初始化栈
	for(int i=0;i<length;i++)
	{
		if(str[i]==‘(‘ || str[i]==‘[‘ || str[i]==‘{‘)	//左括号入栈
			Push(S,str[i]);
		else 
		{
			if(IsEmpty(S))		//栈为空不匹配
				return false;
			ElemType E;
			Pop(S,E);			//出栈
			if(E!=‘(‘ && str[i]==‘)‘)	
				return false;
			if(E!=‘[‘ && str[i]==‘]‘)
				return false;
			if(E!=‘{‘ && str[i]==‘}‘)
				return false;
		}
	}
	return IsEmpty(S);	//全部操作后栈为空匹配
}
void main()
{
	ElemType str[]={‘(‘,‘[‘,‘]‘,‘)‘,‘(‘};
	for(int i=0;i<5;i++)
		printf("%c	",str[i]);
	printf("
");
	printf("括号%s
",Check(str,5)?"匹配":"不匹配");
}

  

以上是关于栈在括号匹配中的应用的主要内容,如果未能解决你的问题,请参考以下文章

栈在括号匹配中的应用

王道3.3 栈的应用

用栈检测括号匹配

Java 栈 如何实现括号匹配

王道3.3 栈的应用以及队列的应用

用栈实现括号匹配的检验