栈的括号匹配算法程序_栈的括号匹配算法程序

栈的括号匹配算法程序_栈的括号匹配算法程序括号匹配的检验1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 6 #define stacksize 100 7 struct sta

括号匹配的检验   1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 6 #define stacksize 100 7 struct stack{ 8 char strstack[stacksize]; 9 int top; 10 }; 11 12 void InitStack(stack &s){ //定义一个新栈,初始化栈顶为-1 13 s.top=-1; 14 } 15 16 char Push(stack &s,char a){ 17 if(s.top==stacksize-1) //判断栈是否已满,若栈满返回0,不进行入栈操作 18 return 0; 19 s.top++; //栈顶指针指向下一个存储单 20 s.strstack[s.top]=a; //入栈操作 21 return a; //返回入栈的字符 22 } 23 24 char Pop(stack &s){ 25 if(s.top==-1) //判断栈是否为空,若为空返回0;不进行出栈操作 26 return 0; 27 char a=s.strstack[s.top];//栈顶素赋给a 28 s.top–; //栈顶指针移向前一个存储单 29 return a; //返回出栈的字符串 30 } 31 32 int Empty(stack &s){ //判断栈是否为空,栈空返回1,不空返回0 33 if(s.top==-1) 34 return 1; 35 else 36 return 0; 37 } 38 39 int Check(char* str){ //判断字符串str是否匹配 40 stack s; //声明一个栈 41 InitStack(s); //初始化栈 42 int strn=strlen(str); 43 for(int i=0;i<strn;i++) 44 { 45 char a=str[i]; 46 switch (a){ 47 case ‘(‘: 48 case ‘[‘: 49 case ‘{‘: 50 Push(s,a); 51 break; 52 case ‘)’: 53 if(Pop(s)!='(‘) 54 return 0; 55 break; 56 case ‘]’: 57 if(Pop(s)!='[‘) 58 return 0; 59 break; 60 case ‘}’: 61 if(Pop(s)!='{‘) 62 return 0; 63 break; 64 } 65 } 66 return Empty(s); //返回栈是否为空,返回1则说明str匹配,返回0说明不匹配 67 } 68 69 int main() 70 { 71 int n; 72 cin>>n; 73 while(n–) 74 { 75 char str[100]; 76 cin>>str; 77 int re=Check(str); 78 re==1 ? cout<<“right”<<endl : cout<<“wrong”<<endl; 79 } 80 return 0; 81 }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/74372.html

(0)
上一篇 2024年 8月 5日 下午1:02
下一篇 2024年 8月 5日 下午1:06

相关推荐

关注微信