广义表

作者: sakura579 | 来源:发表于2020-09-01 01:04 被阅读0次

    在线性表中 表元素特点:每个元素都是不可再分的原子。

    在广义表中,表结点既可以是原子(不可再分),也可以是广义表本身。

    可以 理解成 分层的结构,目前这个广义表就是有两层
    也可以理解成 递归的结构,就是每一个子结构 和其整体有着相同的结构

    广义表的长度 是 第一层的元素个数
    广义表的深度 是 括号个数

    对于一个广义表:
    取表头操作 GetHead()可能得到一个原子,也可能得到一个广义表。
    取表尾操作 GetTail()必然会得到一个广义表。
    并且在取表尾的时候,伴随着一个构建广义表的操作。
    把广义表中除去表头部分的 给取出来,然后用它构建广义表,得到的叫表尾。

    tail
    n. 尾巴;踪迹;辫子;燕尾服
    vt. 尾随;装上尾巴
    vi. 跟踪;变少或缩小
    adj. 从后面而来的;尾部的

    head
    n. 头;头痛;上端;最前的部分;理解力
    vt. 前进;用头顶;作为…的首领;站在…的前头;给…加标题
    vi. 出发;成头状物;船驶往
    adj. 头的;主要的;在顶端的

    含有两个域的代表原子结点
    含有三个域的代表广义表结点

    所有结点的第一个域 指明了 这是一个什么结点 :
    1 代表广义表结点
    0 代表原子结点

    对于同一层的每一个广义表元素,都为它建立一个广义表结点

    同一层的广义表结点,通过第三个指针域串成一行,形成一个类似链表的结构。

    如果当前的广义表结点 对应的是原子,则建立一个原子结点,存储信息,并用广义表结点中间的指针域指向它。

    如果建立的广义表结点,假设这个广义表叫X, 对应的是广义表,X中间域的指针 就指向 广义表的第一层第一个 。


    第一个域:
    1 代表 表结点
    0 代表 原子结点
    不同的是
    在这种存储结构中: 只有一种结构体变量
    既可作为原子结点,也可作为表结点。

    在广义表的每一层中 先建立一个表结点,
    然后为本层的每一个元素都建立一个结点,

    把这些所有的结点用第三个指针域串成一行,

    然后检查为每个元素建立的结点,

    假设当前检查的结点A,

    如果A对应的元素是原子,在第二个域保存原子信息。
    如果A对应的元素是广义表,则从A的中间指针域引出指针,指向这个广义表的第一个结点。

    注意这两个指针指的位置,指的是B、C这两个广义表第一个表结点的后面那个结点

    相关文章

      网友评论

          本文标题:广义表

          本文链接:https://www.haomeiwen.com/subject/mwaesktx.html