zl程序教程

您现在的位置是:首页 >  其他

当前栏目

栈练习——括号匹配

2023-02-26 12:28:31 时间

括号匹配

栈练习——括号匹配

#include<iostream> #include<string> #include<cstring>  using namespace std;  #define OVERFLOW -2 #define OK 1 #define ERROR -1  typedef int Status; typedef char SElemType;  typedef struct StackNode {     SElemType data;     struct StackNode* next; }StackNode, * LinkStack;  // 链栈初始化 void InitStack(LinkStack& S) {     S = NULL; }  // 判断链栈是否为空 Status StackEmpty(LinkStack S) {     if (S == NULL) return 1;     else return 0; }  Status GetTop(LinkStack S, SElemType& e) {     if (StackEmpty(S)) return ERROR;     e = S->data;     return OK; }  // 入栈 Status Push(LinkStack& S, SElemType e) {     LinkStack p;     p = new StackNode;     if (!p) exit(OVERFLOW);     p->data = e;     p->next = S;     S = p;     return OK; }  // 出栈 Status Pop(LinkStack& S) {     if (StackEmpty(S)) return ERROR;     LinkStack p;     p = S;     S = S->next;     delete p;     p = NULL;     return OK; }  /*-----------括号匹配----------*/ int Match(string str) {     LinkStack S;     int i;     SElemType e;     InitStack(S);     for (i = 0; i < str.length(); i++) {         /*         此处不可使用strlen(str)         strlen() 参数为const char* 类型         ---------------------------         char cstr[20];         strcpy(cstr, str.c_str());         ---------------------------         */         if (str[i] == '(' || str[i] == '[' || str[i] == '{')             Push(S, str[i]);         if (str[i] == ')' || str[i] == ']' || str[i] == '}') {             if (StackEmpty(S)) {                 cout << "右括号多!";                 return ERROR;             }             else {                 GetTop(S, e);                 if((e == '(' && str[i] == ')') || (e == '['                     && str[i] == ']') || (e == '{' && str[i] == '}'))                     Pop(S);                 else {                     cout << "次序乱!";                     return ERROR;                 }              }         }     }     if (StackEmpty(S)) {         cout << "匹配成功!";         return OK;     }     else {         cout << "左括号多!";         return ERROR;     } }  int main() {     string str;     cout << "请输入字符串:";     cin >> str;     Match(str);     return 0; }
请输入字符串:fdas(fd( 左括号多!

栈练习——括号匹配


本站部分内容转载自网络,版权属于原作者所有,如有异议请联系QQ153890879修改或删除,谢谢!
转载请注明原文链接:栈练习——括号匹配

你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:

1、点击这里立即申请成为腾讯云VIP客户

2、点击这里立即注册成为天翼云VIP客户

3、点击这里立即申请成为华为云VIP客户

4、点击这里立享阿里云产品终身VIP优惠价

喜欢 (0)
[[email protected]]
分享 (0)