利用栈解决括号匹配问题_括号匹配问题 栈c++语言

利用栈解决括号匹配问题_括号匹配问题 栈c++语言用栈实现括号的匹配问题C/C++好的,以下是 C++ 实现顺序栈带基本操作和括号匹配问题的代码示例:“`c++#include <iostream>#include <stack>#include <st

用栈实现括号的匹配问题–C/C++   好的,以下是 C++ 实现顺序栈带基本操作和括号匹配问题的代码示例:   “`c++   #include <iostream>   #include <stack>   #include <string>   using namespace std;   const int MAXSIZE = 100; // 栈的最大容量   class Stack {   private:   char data[MAXSIZE]; // 栈的素数组   int top; // 栈顶指针   public:   Stack() { // 构造函数,初始化栈顶指针   top = -1;   }   bool push(char x) { // 入栈操作   if (top == MAXSIZE – 1) { // 栈满   cout << “Error: Stack is full.” << endl;   return false;   }   data[++top] = x; // 先将栈顶指针加1,再将素x入栈   return true;   }   bool pop(char &x) { // 出栈操作   if (top == -1) { // 栈空   cout << “Error: Stack is empty.” << endl;   return false;   }   x = data[top–]; // 先将栈顶素出栈,再将栈顶指针减1   return true;   }   bool getTop(char &x) { // 栈顶素   if (top == -1) { // 栈空   cout << “Error: Stack is empty.” << endl;   return false;   }   x = data[top]; // 直接栈顶素   return true;   }   bool isEmpty() { // 判断栈是否为空   return top == -1;   }   };   bool isMatch(char a, char b) { // 判断两个括号是否匹配   return (a == ‘(‘ && b == ‘)’) || (a == ‘[‘ && b == ‘]’) || (a == ‘{‘ && b == ‘}’);   }   bool isValid(string s) { // 判断字符串中的括号是否匹配   Stack st;   for (int i = 0; i < s.length(); i++) {   if (s[i] == ‘(‘ || s[i] == ‘[‘ || s[i] == ‘{‘) {   st.push(s[i]);   } else if (s[i] == ‘)’ || s[i] == ‘]’ || s[i] == ‘}’) {   char ch;   if (!st.pop(ch) || !isMatch(ch, s[i])) {   return false;   }   }   }   return st.isEmpty();   }   int main() {   Stack s; // 创建一个栈   char x;   s.push(‘a’);   s.push(‘b’);   s.push(‘c’);   s.pop(x);   cout << “Pop element: ” << x << endl;   s.getTop(x);   cout << “Top element: ” << x << endl;   cout << “Is empty? ” << (s.isEmpty() ? “Yes” : “No”) << endl;   string str = “({[()]})”;   cout << str << ” is “;   cout << (isValid(str) ? “valid” : “invalid”) << endl;   return 0;   }   “`   这个顺序栈使用了一个数组来存储素,同时使用一个指针 top 来记录当前栈顶的位置。入栈操作 `push()` 将素插入到栈顶,出栈操作 `pop()` 删除栈顶素并返回其值,栈顶素操作 `getTop()` 直接返回栈顶素的值,判断栈是否为空操作 `isEmpty()` 判断 top 是否等于 -1。   在这个代码示例中,我们还实现了一个函数 `isMatch()` 来判断两个括号是否匹配,并使用一个栈来解决括号匹配问题。函数 `isValid()` 用于判断给定字符串中的括号是否匹配。

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

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

(0)
上一篇 2024年 9月 12日 下午6:16
下一篇 2024年 9月 12日 下午6:20

相关推荐

关注微信