求广义表深度的算法
时间: 2023-07-26 18:05:50 浏览: 181
广义表的创建,深度计算
4星 · 用户满意度95%
求广义表深度的算法可以通过递归实现。具体步骤如下:
1. 如果广义表为空,则深度为1;
2. 如果广义表只包含一个元素,且该元素为原子,则深度为1;
3. 如果广义表只包含一个元素,且该元素为子表,则深度为子表深度加1;
4. 如果广义表包含多个元素,则将每个元素看作一个子表,求出每个子表的深度,然后取最大值加1即为广义表的深度。
以下是示例代码:
```
int getDepth(string s) {
int len = s.length();
int depth = 0, cur_depth = 0;
for (int i = 0; i < len; i++) {
if (s[i] == '(') {
cur_depth++;
depth = max(depth, cur_depth);
} else if (s[i] == ')') {
cur_depth--;
}
}
return depth;
}
```
其中,字符串s为广义表的表达式形式,例如"(a,(b,c))"。算法采用了栈的思想,遍历字符串中的每个字符,当遇到左括号时,当前深度加1,并更新最大深度;当遇到右括号时,当前深度减1。最后返回最大深度即可。
阅读全文