栈在括号匹配中的应用
作者:互联网
#include<stdio.h> #include<stdlib.h> #define MaxSize 50 //定义栈 typedef struct{ int data[MaxSize]; //存放栈中元素 int top; //栈顶指针 }SqStack; //初始化栈 void InitStack(SqStack &S){ S.top=-1; //初始化栈顶指针 } //判断栈空 bool StackEmpty(SqStack S){ if(S.top=-1){ return true; }else{ return false; } } //入栈 bool Push(SqStack &S,char x){ if(S.top=MaxSize-1){ //判断栈是否已满 return false; } S.top+=1; S.data[S.top]=x; return true; } //出栈 bool Pop(SqStack &S,char &x){ if(S.top=-1){ //判断栈空 return false; } x=S.data[S.top]; S.top-=1; return true; } //栈在括号匹配中的应用 bool bracketCheck(char str[],int length){ SqStack S; InitStack(S); //初始化栈 for(int i=0;i<length;i++){ if(str[i]=='('||str[i]=='['||str[i]=='{'){ //扫描到左括号——执行入栈操作 Push(S,str[i]); }else{ if(StackEmpty(S)){ //扫描到右括号且此时栈空——括号匹配失败 return false; }else{ char topElem; //用来存放出栈元素 Pop(S,topElem); //栈顶元素出栈 if(str[i]==')'&&topElem!='(') return false; if(str[i]==']'&&topElem!='[') return false; if(str[i]=='}'&&topElem!='{') return false; } } } return StackEmpty(S); //括号匹配正确且最终栈空——括号匹配成功 } //主函数 int main(){ }
标签:return,SqStack,int,top,括号,bool,应用,匹配,false 来源: https://www.cnblogs.com/zyj3955/p/16471266.html