返回

广义表

发布时间:2023-08-19 02:53:48 233

1 广义表的作用

数组可以存储不可再分的数据元素(如元素1,字符‘a’),也可以存储数组。但在数组中,两种不同类型的存储元素不能出现在同一个数组中。

例如在数组中,可以存储{1,2,3},也可以创建二维数组{1,{1,2,3}},但数组不适合存储类似多维数组的元素,会极大的造成存储空间的浪费。

对于存储多维数组可以使用广义表结构来存储。

广义表,又称为列表,是一种线性存储结构。同数组类似,既可以存储不可再分的元素,也可以存储广义表,称作:广义表_数据,其中广义表_广义表_02代表广义表的名称,广义表_数据_03表示广义表存储的数据,广义表中每个广义表_数组_04既可以代表单个元素,也可以代表另一个广义表,习惯上用大写字母表示广义表的名字,用小写字母表示原子。

在广义表中,存储的单个元素称为原子,存储的广义表称为子表

2 广义表的结论

  1. 广义表的元素可以使子表,而子表的元素还可以是子表。由此,广义表是一个多层次的结构,可以用图形抽象表示。如图所示,D是广义表,圆圈表示广义表,方块表示原子。

广义表_数组_05

  1. 广义表可为其他广义表所共享,如上图,广义表A、B和C为D的子表,则在D中可以不必列出子表的值,而是通过子表的名称来引用。
  2. 广义表可以是一个递归的表,即广义表也可以是其本身的一个子表。

3 广义表的两个重要运算

  1. 取表头GetHead(LS):取出的表头为非空广义表中的第一个元素,它可以是一个单原子,也可以是一个子表。
  2. 取表尾GetTail(LS):**取出的表尾为除去表头之外,由其他元素构成的表。**即表尾一定是一个广义表。

例如:

广义表_数据_06

GetHead(B)=e GetTail(B)=()

GetHead(D)=A GetTail(D)=(B,C),

由于B,C是广义表,则可继续分解得到:

GetHead(B,C)=B GetTail(B,C)=C

广义表()和(())不同,前者为空表,长度n=0;后者长度n=1,可继续分解得到其表头,表尾均为空表()。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
八大排序 (上) 2023-08-19 00:10:28