码迷,mamicode.com
首页 > 其他好文 > 详细

栈在括号匹配中的应用

时间:2020-07-03 23:05:20      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:type   std   length   pre   操作   sem   highlight   size   %s   

#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\t",str[i]);
	printf("\n");
	printf("括号%s\n",Check(str,5)?"匹配":"不匹配");
}

  

栈在括号匹配中的应用

标签:type   std   length   pre   操作   sem   highlight   size   %s   

原文地址:https://www.cnblogs.com/-slz-2/p/13232927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!