基本操作: {结构初始化} InitGList(&L); 操作结果:创建空的广义表 L。 CreateGList(&L, S); 初始条件:S是广义表的书写形式串。 操作结果:由S创建广义表 L。 CopyGList(&T, L); 初始条件:广义表 L 存在。 操作结果:由广义表 L 复制得到广义表 T。 {销毁结构} DestroyGList(&L); 初始条件:广义表 L 存在。 操作结果:销毁广义表 L。 |
例如,以下为以"字符串"书写形式表示的广义表。 A=() F=(b,(c,d,e)) E=(b,(c),(d,e)) D=(E,A,F) C=(A,D,F) B=(a,B)=(a,(a,(a,v...))) 通常,以大写的字母表示广义表的表名,而用单个的小写字母表示单原子。 |
|||||||||
{引用型操作} GListLength(L); 初始条件:广义表 L 存在。 操作结果:求广义表 L 的长度,即元素个数。 GListDepth(L); 初始条件:广义表 L 存在。 操作结果:求广义表 L 的深度。 |
例如,广义表F的长度为2,广义表 E 的长度为3,可见广义表中元素的"个数"应由最外层括弧中的"逗号"来定。 广义表的深度定义为括弧嵌套的最深层次。因此对广义表来说,"空表"的深度为1,广义表E和F的深度都为2。 |
|||||||||
GListEmpty(L); 初始条件:广义表 L 存在。 操作结果:判定广义表 L 是否为空表。 GetHead(L); 初始条件:广义表 L 存在且非空。 操作结果:返回广义表 L 的表头。 GetTail(L); 初始条件:广义表 L 存在且非空。 操作结果:返回广义表 L 的表尾。 {加工型操作} InsertFirst_GL(&L, e); 初始条件:广义表 L 存在。 操作结果:插入元素 e 作为广义表 L 的第一个元素。 DeleteFirst_GL(&L, &e); 初始条件:广义表 L 存在。 操作结果:删除广义表 L 中第一个元素,并用 e 返回其值。 Traverse_GL(L, Visit()); 初始条件:广义表 L 存在。 操作结果:遍历广义表 L,用函数 Visit 处理每个元素。 } ADT GList |
例如,A=( )为空表,因为表中没有元素。
|