广义表是什么?

如题所述

  广义表  广义表,顾名思义,它也是线性表的一种推广。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。  在第二章中,线性表被定义为一个有限的序列(a1,a2,a3,...,an)其中ai被限定为是单个数据元素。广义表也是n个数据元素d1,d2,d3,...,dn的有限序列,但不同的是,广义表中的di 则既可以是单个元素,还可以是一个广义表,通常记作:GL=(d1,d2,d3,...,dn)。GL是广义表的名字,通常广义表的名字用大写字母表示。n是广义表的长度。若其中di是一个广义表,则称di是广义表GL的子表。在广义表GL中,d1是广义表GL的表头,而广义表GL其余部分组成的表(d2,d3,...,dn)称为广义表的表尾。由此可见广义表的定义是递归定义的。因为在定义广义表时,又使用了广义表的概念。下面给出一些广义表的例子,以加深对广义表概念的理解。  l D=() 空表;其长度为零。  l A=(a,(b,c)) 表长度为2的广义表,其中第一个元素是单个数据a,第二个元素是一个子表(b,c)。  l B=(A,A,D) 长度为3的广义表,其前两个元素为表A,第三个元素为空表D。  l C=(a,C) 长度为2递归定义的广义表,C相当于无穷表C=(a,(a,(a,(...))))。  其中,A,B,C,D是广义表的名字。下面以广义表A为例,说明求表头、表尾的操作如下:  head(A)=a; 表A的表头是:a  tail(A)=((b,c)); 表A的表尾是((b,c))。广义表的表尾一定是一个表。
温馨提示:答案为网友推荐,仅供参考
相似回答