求广义表深度的时候,为什么空广义表的深度和长度是零,不是查括号的个数吗? 而为什么只有一个原子元素的广义表深


/* 以下是关于广义表操作的4个简单算法 */
int tag; /* 标志域:取0表示单元素结点;取1时表示子表结点 */
/* 遍历每个结点,求出所以子表的最大深度 */
/* 递归求出一个子表的深度 */
/* 让max始终为同一个所求子表中深度的最大值 */
/* 3.建立广义表的存储结构 */
char ch;/* 读入一个字符,此处可能读入'#','(',')',','或者英文字母 */
/* 若输入为#,则置表头指针为空 */
/* 若输入左括号则建立由*gl所指向的子表结点并递归构造子表 */
/* 若输入为字符则建立由*gl所指向的单元素结点 */
/* 此处读入的字符必为逗号或右括号或分号 */
/* 若*gl为空,则什么都不做 */
/* 若输入为逗号则递归构造后继表 */
/* 若输入为右括号或分号则置*gl的后继指针域为空 */
/* 对于表结点的处理 */
/* 存在子表,先输出左括号 */
/* 若子表为空,则输出'#'字符 */
/* 若子表非表,则递归输出子表 */
/* 当一个子表输出结束后,再输出右括号 */
/* 对单元素结点,则输出该结点的值 */
/* 输出该结点的后继表 */
/* 先输出逗号分隔 */
/* 再递归输出后继表 */
printf("输入一个广义表, 以右括号结束 ");

若广义表ls为空表则其深度为多少

  • 判断 1正确2错误3正确4错误5错误
    选择 1(3)2(2)3(3)4(2)5(3)
    填空记不清楚了,大题费劲,就不答了,自己看看书吧,只能帮到这了

  • 广义表的深度定义为广义表书写形式中括弧的最大重数,因此空表的深度为1。

  • 0

广义表是对线性表的扩展——线性表存储的所有的数据都是原子的(一个数或者不可分割的结构),且所有的数据类型相同。而广义表是允许线性表容纳自身结构的数据结构。

广义表定义: 广义表是由n个元素组成的序列:LS = (a1,a2, ... an);其中 ai是一个原子项或者是一个广义表。n是广义表的长度。若ai是广义表,则称为LS的子表。

广义表表头和表尾: 若广义表LS不空,则a1,称为LS的表头,其余元素组成的子表称为表尾。

广义表的长度: 若广义表不空,则广义表所包含的元素的个数,叫广义表的长度。

广义表的深度: 广义表中括号的最大层数叫广义表的深度。


我要回帖

更多关于 广义表的深度和长度 的文章

 

随机推荐