Dotcpp  >  编程题库  >  数据结构-广义表的基本操作
题目 1696:

数据结构-广义表的基本操作

时间限制: 3s 内存限制: 96MB 提交: 69 解决: 43

题目描述

广义表是线性表的推广和扩展。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP中,广义表是基本的数据结构,甚至程序本身也可以被表示为一系列的广义表。
由于广义表列表中的数据元素可能具有不同的结构,因此难以用顺序存储结构表示,而通常采用链式存储结构,每个数据元素用一个结点来表示。而结点的结构可以为原子或列表,因此需要两种结构的结点。常用的广义表存储方式可以是头尾链表存储,其形式定义如下:
广义表的基本操作1
广义表的深度定义为广义表中括号的重数,是广义表的一种量度。通过递归算法可以求得广义表的深度,算法描述如下:
广义表的基本操作2
而广义表的复制同样也可以通过递归算法得到实现,算法描述如下:
广义表的基本操作3
广义表可以被表示成一个字符串,即广义表的书写形式。我们将会给出一个广义表的书写形式字符串,请通过如下所示的算法将其转换成广义表,并将得到的广义表复制为新的广义表,计算并输出新的广义表的深度。
广义表的基本操作4

输入格式

输入只有一行,包含一个无空格的字符串S,即广义表的书写形式串。保证S为合法的广义表书写形式串,且S的长度不超过100。

输出格式

只有一个整数,即按照题目描述的过程得出的广义表的深度。请注意行尾输出换行。

样例输入

((),(e),(a,(b,c,d)))

样例输出

3

提示

零基础的同学可以先学习基础,教程见:  C语言教程C++教程编译器教程数据结构教程Python教程单片机教程

视频教学见视频网课

标签

通过率

统 计