《 数 据 结 构 》 课 程 设 计 题 目 : 广 义 表 的 运 算 广 义 表 是 线 性 表 的 推 广 。 线 性 表 的 元 素 仅 限 于 原 子 项 。 广 义 表 的 元 素 或 者是 原 子 , 或 者 是 一 个 广 义 表 , 有 其 自 身 结 构 。 广 义 表 通 常 用 圆 括 号 括 起 来 , 用逗 号 分 隔 其 中 的 元 素 。 为 了 区 分 原 子 和 广 义 表 , 书 写 时 用 大 写 字 母 表 示 广 义 表 ,用 小 写 字 母 表 示 原 子 。 LS=(a1,a2,… ,an),LS 是 广 义 表 的 名 字 , n 为 它 的 长 度 ,若 ai 是 广 义 表 , 则 称 它 为 LS 的 子 表 。 若 广 义 表 非 空 (n>=1), 则 a1 是 LS 的 表头 , 其 余 元 素 组 成 的 表 (a2,… ,an)称 为 LS 的 表 尾 。 一 个 表 展 开 后 所 含 括 号 的 层数 称 为 广 义 表 的 深 度 。 本 设 计 要 求 实 现 广 义 表 的 建 立 、 查 找 、 输 出 、 取 表 头 、 取 表 尾 及 求 深 度 等运 算 。 选 择 合 适 的 存 储 结 构 表 示 广 义 表 , 并 能 实 现 下 列 运 算 要 求 : (1)用 大 写 字 母 表 示 广 义 表 , 用 小 写 字 母 表 示 原 子 , 并 提 供 设 置 广 义 表 的 值 的 功能 。 (2)取 广 义 表 L 的 表 头 和 表 尾 的 函 数 head(L)和 tail(L)。 (3)能 用 这 两 个 函 数 的 复 合 形 式 求 出 广 义 表 中 的 指 定 元 素 。 (4)由 广 义 表 的 字 符 串 形 式 到广 义 表 的 转换函 数 Lists Str_ToLists_(S);例如Str_ToLists_(“ (a,(a,b),c)”)的 值 为 一 个 广 义 表 。 (5)由 广 义 表 到广 义 表 的 字 符 串 形 式 的 转换函 数 char * Lists_To_Str(L)。 (6)最好能 设 置 多个 广 义 表 。 解: 本 题 的 解法如下 : 1 算 法设 计 1 .由 于 广 义 表 (a1,a2,… ,an)中 的 数 据 元 素 可以具有 不同的 结 构 (或 是 原 子 或 是列 表 )因此难以用 顺序存 储 结 构 表 示 , 通 常 采取 链式 存 储 ...