广义表
广义表
是一种扩展线性表,又称为列表(Lists),是n(n>=0)个元素的有限序列,其中每一个ai是一个原子或广义表
一般用大写字母表示广义表,小写字母表示原子
记为LS=(a1,a2,...,an);其中LS为表名,n为表长,ai为表的元素
广义表中的数据元素有相对次序,一个直接前驱和一个直接后继
-
表头:若LS非空,则其第一个元素a1就是表头(表头可以是原子也可以是字表)
记为:head(LS)=a1
-
表尾:除表头之外的其他元素组成的表 (表尾是一个字表)
记为:tail(LS)=(a2,...,an)
-
广义表的长度:最外层所包含元素个数
-
广义表的深度:广义表展开后所包含的括号重数
-
广义表可以为其他广义表所共享,如广义表B共享广义表A:B=(A)通过名称引用
-
递归表的长度有限,深度无穷
例:
- A=() 空表,长度为0
- B=(()) 长度为1,表头表尾都是空表()
- C=((a,(b,c)) 长度为1,表头为a表尾为((b,c))
- D=(x,y,z) 长度为3,表头为x表尾为(y,z)
- E=((b,c)) 长度为1,表头为(b,c)表尾为()
- F=(a) 长度为1,表头为a表尾为()
- 共享广义表E=(C,D) 长度为2,表头为C表尾为(D)
- 嵌套广义表F=(a,F)/F=(a,(a,(a,...))) 长度为2,表头为a表尾为(F)
广义表可用图形象表示: