广义表的原理(没有代码实现)

发布时间 2023-10-27 21:31:14作者: 小菜碟子

广义表是线性表的推广,又称列表。线性表的元素只限于原子项,即每个数据元素只能是一个数或一个记录,如果放松对线性表元素的这种限制,允许他们自身具有结构,那么就产生了广义表。
广义表是一种多层次的线性结构,像是一颗倒扣的树,实际上,这也算是一种树形结构。广义表不仅是线性表的推广,也算是树结构的推广。

广义表的存储结构
广义表的元素本身可以具有结构,这是一种带有层次性的线性结构。这里我们定义了三个域。一个为tag标志位,指示了当前元素是原子还是子表。广义表规定了当tag为0时,当前原子项为原子(data),当tag为1时,当前原子项指向下一个原子子表的地址。(slink),即当广义表中的某个节点出现了data时,不可能出现节点slink。这个我们可以通过union联合体来实现。
另一个节点是link。link指向了同一层次的下一个元素的地址。类似于链表中得到next,link把每一个节点都窜通在了一起,不同于slink的是,link指向下一个节点,slink指向子表,当slink存在是,link一定为NULL。

广义表理论存储形式直观表述