广义表有许多运算,现仅介绍如下几种:
①求广义表的深度
假设广义表以单链表表示法作存储结构,则它的深度可以递归求出,即广义表的深度等于它的所有子表的最大深度加1。设depth表示任一子表的深度,max表示所有子表中表的最大深度,则广义表的深度为depth=max+1,算法描述如下:
②广义表的建立
假设广义表以单链表的形式存储,广义表由键盘输入,并假定全部为字母,输入格式为:元素之间用逗号分隔,表元素的起止符号分别为左、右圆括号,最后使用一个分号作为整个广义表的结束。
例如,给定一个广义表如下:LS=(a,b,(c,d)),则从键盘输入的数据为:(a,b,(c,d));↙,其中“↙”表示回车换行。具体算法描述如下:
③取表头运算head
若广义表LS=(a1,a2,…,an),则head(LS)=a1。(https://www.xing528.com)
取表头运算得到的结果可以是原子,也可以是一个子表。
例如,head((a1,a2,a3,a4))=a1,head(((a1,a2),(a3,a4),a5))=(a1,a2)。
④取表尾运算tail
若广义表LS=(a1,a2,…,an),则tail(LS)=(a2,a3,…,an)。
即取表尾运算得到的结果是由除表头以外的所有元素构成的子表,取表尾运算得到的结果一定是一个子表。
例如,tail((a1,a2,a3,a4))=(a2,a3,a4),tail(((a1,a2),(a3,a4),a5))=((a3,a4),a5)。
值得注意的是,广义表( )和(())是不同的,前者为空表,长度为0,后者的长度为1,可得到表头和表尾均为空表,即head((( )))=( ),tail((( )))=( )。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
