表达式的括号匹配问题(C-数据结构)

题目

判断表达式的括号是否匹配

思路

对表达式进行遍历,遇到左括号直接入栈,遇到右括号时与栈顶元素对比,如果是对应的右括号,则将左括号出栈,如果不是或栈为空,则不匹配,当最后匹配完时,若栈不为空也,则也不匹配

代码

#include
#include
#include

#define MAXSIZE 1000

typedef struct stack{
	char a[MAXSIZE];
	int top;
	int maxSize;
}Stack;

void Init(Stack*p);
void stackIn(Stack*p,char a);
void stackOut(Stack*p);

int main()
{
	Stack stack;
	Init(&stack);
	char s[MAXSIZE];
	scanf("%s",s); 
	int len=strlen(s); 
	int flag=1; //用flag表示是否匹配 
	for(int i=0;i=0){  //判断左括号是否匹配完 
		flag=0;
	}
	if(flag){
		printf("各种括弧匹配");
	}else{
		printf("各种括弧不匹配");
	} 
 } 
void Init(Stack*p) //初始化栈 
{
	p->top=-1;
	p->maxSize=MAXSIZE;
}

void stackIn(Stack*p,char a) //入栈 
{
	if(p->top>=MAXSIZE){
		return;
	}
	p->a[++p->top]=a;
}
void stackOut(Stack*p) //出栈 
{
	if(p->top<0){
		return;
	}
	p->top--;
}

你可能感兴趣的:(数据结构,c++,c语言,算法,栈)