在线性表中 表元素特点:每个元素都是不可再分的原子。
在广义表中,表结点既可以是原子(不可再分),也可以是广义表本身。
可以 理解成 分层的结构,目前这个广义表就是有两层
也可以理解成 递归的结构,就是每一个子结构 和其整体有着相同的结构
广义表的长度 是 第一层的元素个数
广义表的深度 是 括号个数
对于一个广义表:
取表头操作 GetHead()可能得到一个原子,也可能得到一个广义表。
取表尾操作 GetTail()必然会得到一个广义表。
并且在取表尾的时候,伴随着一个构建广义表的操作。
把广义表中除去表头部分的 给取出来,然后用它构建广义表,得到的叫表尾。
tail
n. 尾巴;踪迹;辫子;燕尾服
vt. 尾随;装上尾巴
vi. 跟踪;变少或缩小
adj. 从后面而来的;尾部的
head
n. 头;头痛;上端;最前的部分;理解力
vt. 前进;用头顶;作为…的首领;站在…的前头;给…加标题
vi. 出发;成头状物;船驶往
adj. 头的;主要的;在顶端的
含有两个域的代表原子结点
含有三个域的代表广义表结点
所有结点的第一个域 指明了 这是一个什么结点 :
1 代表广义表结点
0 代表原子结点
对于同一层的每一个广义表元素,都为它建立一个广义表结点
同一层的广义表结点,通过第三个指针域串成一行,形成一个类似链表的结构。
如果当前的广义表结点 对应的是原子,则建立一个原子结点,存储信息,并用广义表结点中间的指针域指向它。
如果建立的广义表结点,假设这个广义表叫X, 对应的是广义表,X中间域的指针 就指向 广义表的第一层第一个 。
第一个域:
1 代表 表结点
0 代表 原子结点
不同的是
在这种存储结构中: 只有一种结构体变量
既可作为原子结点,也可作为表结点。
在广义表的每一层中 先建立一个表结点,
然后为本层的每一个元素都建立一个结点,
把这些所有的结点用第三个指针域串成一行,
然后检查为每个元素建立的结点,
假设当前检查的结点A,
网友评论