括号匹配问题c++链栈
时间: 2023-11-18 08:56:46 浏览: 170
括号匹配问题
括号匹配问题可以使用C++链栈来解决。具体实现方法如下:
1. 定义一个char型链栈,用于存储左括号。
2. 从左到右遍历输入的符号序列,如果遇到左括号,则将其入栈;如果遇到右括号,则判断栈顶元素是否为对应的左括号,如果是,则将栈顶元素出栈,继续遍历;如果不是,则说明括号不匹配,返回0。
3. 遍历完整个符号序列后,如果栈为空,则说明所有的左右括号都匹配,返回1;否则说明还有左括号没有匹配,返回0。
以下是C++链栈的实现代码:
```c++
#include <iostream>
using namespace std;
struct Node {
char data;
Node* next;
};
class Stack {
private:
Node* top;
public:
Stack() {
top = NULL;
}
void push(char c) {
Node* newNode = new Node;
newNode->data = c;
newNode->next = top;
top = newNode;
}
char pop() {
if (top == NULL) {
return '\0';
}
char c = top->data;
Node* temp = top;
top = top->next;
delete temp;
return c;
}
bool isEmpty() {
return top == NULL;
}
};
int main() {
Stack s;
char c;
while (cin >> c && c != '#') {
if (c == '(') {
s.push(c);
}
else if (c == ')') {
if (s.pop() != '(') {
cout << 0 << endl;
return 0;
}
}
}
if (s.isEmpty()) {
cout << 1 << endl;
}
else {
cout << 0 << endl;
}
return 0;
}
```
阅读全文