广义表(LS ,又称列表)是线性表的推广
定义为:n>=0个元素a1,a2.。。an的有限序列,an可以是一个原子项(结构上不可分割的成分,可以是一个数或者一个结构),也可以是一个广义表(则称为LS的子表)。
抽象数据类定义:
ADT Glist
{
数据对象: D={ei | i=1,2,..,n;n>=0 ; ei?AtomSet 或ei ?Glist,
AtomSet为某个数据对象}
数据关系:R1={< ei-1, ei > | ei-1 , ei ?D,2<=i<=n}
基本操作:
InitGList( &L);
操作结果:创建空的广义表L。
CreateGList(&L,S);
初始条件:S是广义表的书写形式串。
操作结果:由S创建广义表L。
DestroyGList(&L);
初始条件:广义表L存在。
操作结果:销毁广义表L。
CopyGList( &T,L);
初始条件:广义表L存在。
操作结果:由广义表L复制得到广义表T。
GListLength(L);
初始条件:广义表L存在。
操作结果:求广义表L的长度,即元素个数。
GListDepth(L);
初始条件:广义表L存在。
操作结果:求广义表L的深度。
GListEmpty (L);
初始条件:广义表L存在。
操作结果:判定广义表L是否为空。
GetHead(L);
初始条件:广义表L存在。
操作结果:取广义表L的头。
GetTail( &T,L);
初始条件:广义表L存在。
操作结果:取广义表L的尾。
InsertFirst_GL(&L,e);
初始条件:广义表L存在。
操作结果:插入元素e作为广义表L的第一元素。
DeleteFirst_GL(&L,&e);
初始条件:广义表L存在。
操作结果:删除广义表L的第一元素,并用e返回其值。
Traverse_GL (L,visit());
初始条件:广义表L存在。
操作结果:遍历广义表L,用函数visit处理每个元素。
}