1.定义
顾名思义,广义表是线性表的推广,也称为列表。广泛应用于人工智能等领域的表处理语言
LISP
语言。
广义表是由
n(>=0)
个标元素组成的有限序列
一般记作:
LS =(a1,a2,a3......,an)
LS
是广义表的名称,
n
是它的长度
在广义表中,
ai
可以是单个元素,也可以是广义表。
A=() A是一个空表,长度为0
B=(e) B只有一个原子e,其长度为零
C=(a,(b,c,d)) C的长度为2,有两个元素
D=(A,B,C)
E=(a,E) 递归 广义表也可以是其本身的一个子表
广义表D

运算
取表头
GetHead(LS):
取出非空广义表的表头
(
第一个元素
)
。
取表尾
GetTail(LS):
取出非空广义表除表头之外其余元素构成的表是表尾。即表尾一定是一个广义表。
2.存储结构
广义表通常采用两种链式储存结构
头尾链表
广义表不空时,一个表结点由三个域组成:标志域、表头、表尾
一个原子结点只需两个域:标志域和值域

扩展线性链表
无论原子结点还是表结点均由三个域组成。

3.总结
广义表是另外一种线性表的推广形式,线性表可以堪称广义表的特例。
广义表在某种前提下可以兼容线性表、数组、树和有向图等各种常用的数据结构。