抽象数据类型的使用举例
时间: 2023-07-11 20:20:30 浏览: 79
下面是一个使用抽象数据类型的简单例子:
假设我们需要实现一个栈(stack)数据结构,可以使用抽象数据类型来实现。首先,定义一个 Stack 类型,包括以下接口:
- push(x):将元素 x 压入栈顶。
- pop():弹出栈顶元素。
- top():获取栈顶元素。
- empty():判断栈是否为空。
然后,我们可以使用数组(array)或链表(linked list)等数据结构来实现 Stack 类型的具体实现。这样,使用 Stack 类型的程序只需要调用上述接口,而不必关心其具体实现方式。
例如,下面是使用 Stack 类型实现一个简单的括号匹配程序的示例代码:
```
#include <iostream>
#include <stack>
using namespace std;
bool is_valid(string s) {
stack<char> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
st.push(s[i]);
} else if (s[i] == ')' && !st.empty() && st.top() == '(') {
st.pop();
} else if (s[i] == ']' && !st.empty() && st.top() == '[') {
st.pop();
} else if (s[i] == '}' && !st.empty() && st.top() == '{') {
st.pop();
} else {
return false;
}
}
return st.empty();
}
int main() {
string s = "([]{})";
cout << is_valid(s) << endl; // 输出 1
return 0;
}
```
在上述代码中,使用了 STL 中的 stack 类型,封装了栈的具体实现。使用 is_valid 函数来判断字符串 s 中的括号是否匹配。使用抽象数据类型可以使得程序更加易读、易懂、易维护。
阅读全文