用栈实现括号的匹配问题–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