1、高 等 学 校 计 算 机 教 学 系 列 教 材数 据 结 构 教 程迟 乐 军 于 晓 敏王 艳 春 袁 琪 编 于 晓 坤北京航空航天大学出版社内 容 简 介计 算 机 在 各 个 领 域 的 应 用 过 程 中 , 都 会 涉 及 到 数 据 的 组 织 与 程 序 的 编 排 等 问 题 , 都 会 用 到 各种 各 样 的 数 据 结 构 。 选 择 最 合 适 的 数 据 结 构 和 存 储 表 示 方 法 , 以 及 编 制 相 应 的 实 现 算 法 的 方 法 是 计 算机 工 作 者 不 可 缺 少 的 知 识 。本 书 全 面 、 系 统 地 介 绍 各 种 类 型 的
2、 、 最 常 用 的 数 据 结 构 及 其 查 找 、 排 序 的 各 种 方 法 。 对 每 一 种 数 据 结 构 除 了 阐 述 各 种 数 据 结 构 所 涉 及 的 逻 辑 关 系 之 外 , 还 讨 论 它 们 在 计 算 机 中 的 存 储 表 示 方 法 以 及 在 这 些 数 据 结 构 上 的 运 算 ( 操 作 ) 和 实 际 的 执 行 算 法 , 并 对 算 法 的 效 率 进 行 简 要 的 分 析 和 讨 论 。 概 念 清 楚 , 内 容 丰 富 , 详 略 得 当 , 既 便 于 开 展 各 种 层 次 的 教 学 , 又 便 于 读 者 自 学 。本 书
3、可 以 作 为 大 专 院 校 计 算 机 及 相 关 专 业 的 教 材 , 也 可 以 供 从 事 计 算 机 工 程 与 应 用 的 科 技 工 作 者 参 考 。图 书 在 版 编 目 ( CIP) 数 据数 据 结 构 教 程 / 迟 乐 军 等 编 . 北 京 : 北 京 航 空 航 天 大 学 出 版 社 , 2003 .4ISBN 7 81077 293 7 . 数 . 迟 . 数 据 结 构 教 材 . T P311 .12中 国 版 本 图 书 馆 CIP 数 据 核 字 (2003) 第 010330 号数 据 结 构 教 程 迟 乐 军 于 晓 敏 王 艳 春 袁 琪
4、编 于 晓 坤责 任 编 辑 许 传 安*北 京 航 空 航 天 大 学 出 版 社 出 版 发 行北 京 市 海 淀 区 学 院 路 3 7 号 ( 10 0 08 3 ) 发 行 部 电 话 : 82 3 17 0 24 传 真 : 8 23 2 80 2 6 h t t p :/ / www .b ua apr es s .com .cnE-m ail : b h pr es s 2 6 3 .ne t北 京 市 松 源 印 刷 有 限 公 司 印 装 各 地 书 店 经 销*开 本 : 7 87 1 0 9 2 1/ 1 6 印 张 : 1 5 .1 2 5 字 数 : 3 8 4 千
5、 字20 0 3 年 4 月 第 1 版 20 0 4 年 8 月 第 2 次 印 刷 印 数 : 5 00 1 1 0 00 0 册ISB N 7 8 10 7 7 2 9 3 7 定 价 : 2 3 .0 0 元总 前 言科 教 兴 国 , 教 育 先 行 , 在 全 国 上 下 已 形 成 共 识 。 在 教 育 改 革 过 程 中 , 出 现 了 多 渠 道 、 多 形 式 、 多 层 次 办 学 的 局 面 。 同 时 , 政 府 逐 年 加 大 教 育 的 投 入 力 度 。 教 育 发 展 了 , 才 能 有 效 地 提 高全 民 族 的 文 化 、 科 学 素 质 , 使 我
6、们 中 华 民 族 屹 立 于 世 界 民 族 之 林 。计 算 机 科 学 与 技 术 的 发 展 日 新 月 异 , 其 应 用 领 域 迅 速 扩 展 , 几 乎 无 处 不 在 。 社 会 发 展 的 需 求 , 促 使 计 算 机 教 育 生 气 蓬 勃 。 从 普 通 高 校 的 系 统 性 教 学 , 到 远 距 离 的 电 视 、 网 上 教 学 ; 从 全 面 讲 述 , 到 不 同 应 用 领 域 的 、 星 罗 棋 布 的 培 训 班 ; 从 公 办 的 到 民 办 的 ; 从 纸 介 教 材 到 电 子 教 材 等 等 , 可 以 说 计 算 机 教 学 异 彩 纷 呈
7、 。 要 进 行 教 学 , 就 必 须 有 教 材 。面 对 我 们 这 么 大 的 国 家 和 教 学 形 势 , 在 保 证 国 家 教 学 基 本 要 求 的 前 提 下 , 应 当 提 倡 教 材 多 样 化 , 才 能 满 足 各 教 学 单 位 的 需 求 , 使 他 们 形 成 各 自 的 办 学 风 格 和 特 色 。 为 此 , 我 们 组 织 北 京工 业 大 学 、 北 京 航 空 航 天 大 学 、 北 京 理 工 大 学 、 南 开 大 学 、 天 津 工 业 大 学 等 高 校 的 有 丰 富 教 学 经 验 的 教 师 编 写 了 计 算 机 教 学 的 系 列
8、 教 材 , 将 陆 续 与 师 生 见 面 。系 列 教 材 包 括 以 下 各 项 。( 一 ) 基 础 理 论 : 离 散 数 学 。( 二 ) 技 术 基 础 : 电 路 基 础 与 模 拟 电 子 技 术 ; 数 字 逻 辑 基 础 ; 计 算 机 组 成 与 体 系 结 构 ; 计 算 机 语 言 ( 拼 盘 , 选 择 使 用 ) , 包 括 C + + 程 序 设 计 基 础 、 Visual Basic 程 序 设 计 基 础 、 Matlab 程 序 设 计 基 础 、 Java 程 序 设 计 基 础 、 Delphi 语 言 基 础 、 汇 编 语 言 基 础 等 ;
9、数 据 结 构 ; 计 算 机 操 作 系 统基 础 ; 计 算 方 法 基 础 ; 微 机 与 接 口 技 术 ; 数 据 库 技 术 基 础 等 。( 三 ) 应 用 基 础 : 计 算 机 控 制 技 术 ; 网 络 技 术 ; 软 件 工 程 ; 多 媒 体 技 术 等 。( 四 ) 技 术 基 础 扩 展 : 编 译 原 理 与 编 译 构 造 ; 知 识 工 程 网 络 计 算 机 环 境 下 的 知 识 处 理 。( 五 ) 应 用 基 础 扩 展 : 计 算 机 辅 助 设 计 ; 单 片 机 实 用 基 础 ; 图 像 处 理 基 础 ; 传 感 器 与 测 试 技术 ; 计
10、 算 机 外 设 与 接 口 技 术 。本 系 列 教 材 主 要 是 针 对 计 算 机 教 学 编 写 的 , 供 普 通 高 校 、 社 会 民 办 大 学 、 高 等 职 业 学 校 、 业 余 大 学 等 计 算 机 本 科 和 专 科 选 用 。 其 中 一 部 分 教 材 也 适 合 非 计 算 机 专 业 本 科 教 学 使 用 。 在 这 部 分 教 材 的 内 容 简 介 或 前 言 中 对 使 用 范 围 均 作 了 说 明 。本 系 列 教 材 在 编 写 时 , 注 重 以 下 几 点 : ( 1) 面 对 计 算 机 科 学 与 技 术 动 态 发 展 的 现 实
11、, 在 内 容 上 应 具 有 前 瞻 性 ; ( 2) 面 对 学 以 致 用 , 既 有 系 统 的 基 础 知 识 , 又 有 应 用 价 值 的 实 用 性 ; (3 ) 具 有 科 学 性 、 严 谨 性 。 另 外 , 力 求 排 版 紧 凑 , 使 有 限 的 版 面 具 有 最 大 的 信 息 量 , 以 使 读 者 得 到 实 惠 。能 否 实 现 这 些 愿 望 , 只 有 师 生 在 教 学 实 践 中 评 价 。 我 们 期 望 得 到 师 生 的 批 评 和 指 正 。高 校 计 算 机 教 学 系 列 教 材 编 委 会高 校 计 算 机 系 列 教 材 编 委 会
12、 成 员主 任 : 赵 沁 平副 主 任 ( 常 务 ) : 陈 炳 和顾 问 : 麦 中 凡委 员 ( 以 姓 氏 笔 划 为 序 ) :吕 景 瑜 ( 北 工 大 教 授 )乔 少 杰 ( 社 长 , 副 教 授 )麦 中 凡 ( 北 航 教 授 , 教 育 部 工 科 计 算 机 基 础 教 学 指 导 委 员 会 副 主 任 、 中 专 计 算 机 教 学 指 导 委 员 会 顾 问 )苏 开 娜 ( 北 工 大 教 授 ) 陈 炳 和 ( 北 工 大 教 授 ) 张 鸿 宾 ( 北 工 大 博 导 ) 郑 玉 明 ( 北 工 大 副 教 授 ) 金 茂 忠 ( 北 航 博 导 )赵
13、泌 平 ( 北 航 博 导 , 国 务 院 学 位 办 主 任 )前 言计 算 机 在 各 个 领 域 的 应 用 过 程 中 , 都 会 涉 及 到 数 据 的 组 织 与 程 序 的 编 排 等 问 题 , 都 会 用 到 各 种 各 样 的 数 据 结 构 , 特 别 是 针 对 各 种 特 殊 数 据 的 表 示 , 就 更 需 要 学 会 分 析 和 研 究 计 算 机 加 工 对 象 的 特 性 , 选 择 最 合 适 的 数 据 组 织 结 构 及 其 存 储 表 示 方 法 , 以 及 编 制 相 应 实 现 算 法 的 方 法 。 这 是 计 算 机 工 作 者 不 可 缺
14、少 的 知 识 。 因 此 “数 据 结 构” 这 门 课 一 直 是 高 等 院 校 计 算 机 专 业 教 学 中 的 一 门 主 要 技 术 基 础 课 程 。 在 我 国 当 前 的 计 算 机 专 业 教 学 计 划 中 , 它 是 主 干 课 程 之 一 。本 书 介 绍 了 各 种 最 常 用 的 数 据 结 构 , 阐 述 各 种 数 据 结 构 所 内 涵 的 逻 辑 关 系 , 讨 论 它 们 在 计 算 机 中 的 存 储 表 示 , 以 及 在 这 些 数 据 结 构 上 的 运 算 ( 操 作 ) 和 实 际 的 执 行 算 法 , 并 对 算 法 的 效 率 进 行
15、 简 要 的 分 析 和 讨 论 。全 书 共 10 章 。 前 面 4 章 主 要 介 绍 数 据 结 构 的 基 本 知 识 和 几 种 基 本 的 数 据 结 构 , 即 线 性 表 、 栈 和 队 列 、 串 和 数 组 。 它 们 均 属 于 线 性 数 据 结 构 。 第 5 章 和 第 6 章 叙 述 非 线 性 数 据 结 构 。 它 们 是 树 、 图 和 广 义 表 。 第 7、 8 两 章 分 别 介 绍 数 据 处 理 中 广 泛 使 用 的 技 术 排 序 和 查 找 。 第 9 章 讨 论 外 存 储 器 上 的 数 据 结 构 文 件 。 第 10 章 给 出 了
16、 学 生 实 践 所 需 的 实 习 与 设 计 课题 及 其 分 析 问 题 和 解 决 问 题 的 方 法 和 思 路 。 最 后 的 附 录 概 要 地 叙 述 C 语 言 , 便 于 读 者 理 解 书中 用 C 语 言 描 述 的 算 法 。本 书 是 在 作 者 多 年 教 学 经 验 的 基 础 上 编 写 而 成 的 。 在 编 写 过 程 当 中 的 编 写 思 路 既 注 重 基 本 原 理 的 介 绍 , 又 重 视 实 践 能 力 的 培 养 。 书 中 还 配 有 大 量 的 例 题 和 习 题 , 供 学 生 练 习 , 加 深 对知 识 点 的 理 解 程 度 。
17、 本 书 讲 解 详 细 , 通 俗 易 懂 , 详 略 得 当 。 书 中 算 法 采 用 类 C 语 言 进 行 描 述 , 且 所 给 的 程 序 均 已 在 计 算 机 上 运 行 调 试 , 部 分 程 序 还 做 了 较 详 细 的 注 解 , 以 便 读 者 了 解 算 法 的 实 质 和 基 本 思 想 。 书 中 每 一 章 均 有 习 题 , 可 以 检 验 读 者 的 学 习 效 果 和 培 养 程 序 设 计 的 能 力 。本 书 既 可 作 为 计 算 机 专 业 的 教 材 , 亦 可 供 从 事 计 算 机 应 用 的 工 程 技 术 人 员 参 考 , 特 别
18、适 合 于 那 些 使 用 C 语 言 编 程 的 计 算 机 应 用 人 员 。 使 用 本 书 作 为 本 科 生 教 材 时 , 其 内 容 可 以 讲 授 一个 学 期 ; 若 使 用 它 作 为 专 科 生 教 材 时 , 可 以 删 去 带 * 的 章 节 ; 若 使 用 它 作 为 成 人 教 育 ( 面 授 或 函 授 ) 的 教 材 时 , 建 议 酌 情 再 精 简 有 关 内 容 。本 书 初 稿 曾 经 过 我 们 的 教 学 实 践 的 检 验 , 教 学 效 果 较 好 , 学 生 反 映 本 书 好 学 易 懂 。 本 书 的 第 1 章 、 第 9 章 由 迟
19、乐 军 编 写 , 第 2 章 、 第 3 章 和 第 4 章 由 王 艳 春 编 写 , 第 5 章 和 第 6 章 由 于 晓 敏 编 写 , 第 7 章 和 第 8 章 由 袁 琪 编 写 , 第 10 章 由 于 晓 坤 编 写 , 附 录 及 部 分 程 序 的 编 写 由 张 旭 完 成 。 赵 颖 、 于 晓 坤 、 孙 海 龙 、 李 国 军 和 孙 桂 江 等 也 参 与 了 程 序 的 调 试 和 部 分 文 档 的 编 辑 与 整 理 工 作 。 初 稿 完 成 后 , 承 蒙 我 校 计 算 机 系 软 件 教 研 室 的 同 仁 详 细 审 阅 , 提 出 了 许 多
20、 宝 贵 意见 ; 其 他 老 师 亦 提 供 了 许 多 有 益 的 建 议 , 作 者 谨 此 一 并 致 以 诚 挚 的 谢 意 。由 于 作 者 水 平 有 限 , 殷 切 希 望 广 大 读 者 批 评 指 正 。作 者2002 年 10 月第 1 章绪 论自 从 1946 年 第 一 台 计 算 机 问 世 以 来 , 信 息 产 业 的 飞 速 发 展 已 远 远 超 出 人 们 对 它 的 预 料 。 在 某 些 现 代 化 的 生 产 线 上 , 甚 至 几 秒 钟 就 能 生 产 出 一 台 微 型 计 算 机 , 产 量 猛 增 , 产 品 价 格 却 大 幅 度 下 降
21、 。 计 算 机 的 成 本 低 廉 就 使 得 它 的 应 用 范 围 迅 速 扩 展 。 如 今 , 随 着 计 算 机 的 应 用 已 深 入 到 人 类 社 会 的 生 产 、 生 活 等 各 个 领 域 , 计 算 机 的 应 用 已 不 再 局 限 于 科 学 计 算 , 而 更 多 地 用 于 生 产 过 程 控 制 、 信 息 管 理 及 音 频 、 视 频 等 特 殊 数 据 处 理 等 非 数 值 计 算 的 处 理 工 作 。 与 此 相 对 应 , 计 算 机 所 加 工 处 理 的 对 象 也 由 数 据 和 相 应 的 结 构 构 成 。 这 就 是 “ 数 据 结
22、 构” 这 门 学 科 形 成 和 发 展 的 背 景 。1 .1 什 么 是 数 据 结 构一 般 来 说 , 当 我 们 用 计 算 机 解 决 一 个 具 体 问 题 时 , 大 致 都 需 要 经 过 下 面 几 个 步 聚 : 首 先 要 从 具 体 问 题 中 抽 象 出 一 个 适 当 的 数 学 模 型 ( 或 数 学 公 式 ) , 然 后 设 计 一 个 描 述 此 数 学 模 型 的 算 法 , 最 后 利 用 合 适 的 程 序 设 计 语 言 来 编 写 程 序 , 进 行 测 试 、 调 整 , 直 至 最 终 得 到 满 意 的 解 答 。 抽 象 数 学 模 型
23、 的 过 程 实 质 上 是 分 析 问 题 , 从 中 提 取 操 作 的 对 象 并 找 出 这 些 操 作 对 象 之 间 含 有 的 关 系 , 然 后 用 数 学 的 语 言 加 以 描 述 的 过 程 。 事 实 上 , 有 些 问 题 的 求 解 过 程 可 以 通 过 一 定 的 方 程 进 行 一 定 的 运 算 来 获 取 。 例 如 , 求 解 梁 架 结 构 中 应 力 的 数 学 模 型 为 线 性 方 程 组 ; 预 报 人 口 增 长 情 况 的 数 学 模 型 为 微 分 方 程 。 然 而 , 更 多 的 非 数 值 计 算 问 题 却 无 法 用 数 学 方
24、 程 加 以 描 述 。 下 面 请 看 几 个 例 子 。例 1 1 图 书 馆 的 书 目 检 索 系 统 自 动 化 问 题 。当 你 想 借 阅 一 本 参 考 书 , 但 不 知 道 书 库 中 是 否 有 该 书 的 时 候 ; 或 者 , 当 你 想 找 某 一 方 面 的 参 考 书 而 不 知 图 书 馆 内 有 哪 些 这 方 面 的 书 时 , 都 需 要 到 图 书 馆 去 查 阅 图 书 目 录 卡 片 。 在 图 书 馆 内 有 各 种 名 目 的 卡 片 : 有 按 书 名 编 排 的 、 有 按 作 者 名 编 排 的 , 还 有 按 分 类 编 排 的 , 等
25、 等 。 若 利用 计 算 机 实 现 自 动 检 索 , 则 计 算 机 处 理 的 对 象 便 是 这 些 目 录 卡 片 上 的 书 目 信 息 。 列 在 一 张 卡 1片 上 的 一 本 书 的 书 目 信 息 可 由 登 录 号 、 书 名 、 作 者 名 、 分 类 号 、 出 版 单 位 和 出 版 时 间 等 若 干 项 组 成 。 每 一 本 书 都 有 唯 一 的 一 个 登 录 号 , 但 不 同 的 书 目 之 间 可 能 有 相 同 的 书 名 , 或 者 有 相 同 的 作 者 名 , 或 者 有 相 同 的 分 类 号 。 由 此 , 在 书 目 自 动 检 索
26、 系 统 中 可 以 建 立 一 张 按 登 录 号 顺 序 排 列 的 书 目 文 件 和 三 张 分 别 按 书 名 、 作 者 名 和 分 类 号 顺 序 排 列 的 索 引 表 , 如 图 1 1 所 示 。 由 这 四 张 表 构 成 的 文 件 便 是 书 目 自 动 检 索 的 数 学 模 型 。 计 算 机 的 主 要 操 作 便 是 按 照 某 个 特 定 要 求 ( 如给 定 书 名 ) 对 书 目 文 件 进 行 查 询 。 诸 如 此 类 的 还 有 查 号 系 统 自 动 化 、 仓 库 账 目 管 理 等 。 在 这 类 文 档 管 理 的 数 学 模 型 中 ,
27、计 算 机 处 理 的 对 象 之 间 通 常 存 在 着 的 是 一 种 最 简 单 的 线 性 关 系 。 这 类 数 学 模 型 可 称 为 线 性 的 数 据 结 构 。例 1 2 酒 店 管 理 系 统 中 的 客 房 分 配 问 题 。数 据 结 构 教 程在 酒 店 的 客 房 房 态 管 理 过 程 中 , 希 望 同 类 房 中 各 间 客 房 的 出 租 机 会 基 本 均 等 , 以 保 证 维 持 一 个 平 均 的 磨 损 率 。 为 此 , 分 配 客 房 采 用 的 算 法 应 该 是 “ 先 退 的 房 先 被 启 用 ”。 相 应 地 , 所 有 “ 空” 的
28、 同 类 客 房 的 管 理 模 型 应 该 是 一 个 “ 队 列” , 即 酒 店 前 台 每 次 接 待 客 人 入 住 时 , 从 “ 队 头” 分 配 客 房 ; 当 客 人 结 账 离 开 时 , 应 将 退 掉 的 空 客 房 排 在 “ 队 尾” 。 由 于 “ 排 队” 是 日 常 生 活 中 经 常 需 要 的 一 种 行 为 , 因 此 队 列 也 是 这 样 一 类 活 动 的 模 拟 程 序 中 经 常 用 的 一 种 数 学 模 型 。0 0 1 高 等 数 学 樊 映 川 S010 0 2 大 学 物 理 王 微 微 W0 10 0 3 化 学 工 程 郝 兵 H
29、 0 10 0 4 计 算 机 网 络 万 树 蜂 J0 1高 等 数 学 0 01 ,大 学 物 理 0 02 ,计 算 机 网 络 0 04 ,樊 映 川 0 01 ,W 0 02 ,S 0 01 ,J 0 04 ,图 1 1 图 书 目 录 文 件 示 例例 1 3 铺 设 煤 气 管 道 问 题 。假 设 要 在 某 个 城 市 的 n 个 居 民 区 之 间 铺 设 煤 气 管 道 , 则 在 这 n 个 居 民 之 间 只 要 铺 设 n - 1条 管 道 即 可 。 假 设 任 意 两 个 居 民 区 之 间 都 可 以 架 设 管 道 , 但 由 于 地 理 环 境 的 不 同
30、 , 所 需 经 费 也 不 同 , 则 采 用 什 么 样 的 施 工 方 案 能 使 总 投 资 尽 可 能 少 。 这 个 问 题 即 为 “ 求 图 的 最 小 生 成 树” 的 问 题 。 其 数 学 模 型 为 如 图 1 2 所 示 的 “ 图 ”, 图 中 “ 顶2 点” 表 示 居 民 区 , 顶 点 之 间 的 连 线 及 其 上 的 数 值 表 示 可 以 架 设 的 管 道 及 所 需 经 费 。 求 解 的 算 法 为 : 在 可 能 架 设 的 m 条 管 道图 1 2 管 道 铺 设 问 题 中 选 取 n - 1 条 , 既 能 连 通 n 个 居 民 区 ,
31、又 使 总 投 资 达 到 “最 小” 。例 1 4 计 算 机 和 人 对 奕 问 题 。 计 算 机 之 所 以 能 和 人 对 奕 是 因 为 有 人 将 对 奕 的 策 略 事 先 已 存 入 计 算 机 。 由 于 对 奕 的 过 程是 在 一 定 规 则 下 随 机 进 行 的 , 所 以 , 为 使 计 算 机 能 灵 活 对 奕 就 必 须 对 对 奕 过 程 中 所 有 可 能 发 生的 情 况 以 及 相 应 的 对 策 都 考 虑 周 全 , 并 且 , 一 个 “ 好” 的 棋 手 在 对 奕 时 不 仅 要 看 棋 盘 当 时 的 状 态 , 还 应 能 预 测 棋
32、局 发 展 的 趋 势 , 甚 至 最 后 结 局 。 因 此 , 在 对 奕 问 题 中 , 计 算 机 操 作 的 对 象 是 对 奕 过 程 中 可 能 出 现 的 棋 盘 状 态 称 为 格 局 , 例 如 图 1 3 ( a ) 所 示 为 井 字 棋 的 一 个 格 局 。 格第 1 章 绪 论局 之 间 的 关 系 是 由 比 赛 规 则 决 定 的 。 通 常 , 这 个 关 系 不 是 线 性 的 , 因 为 从 一 个 棋 盘 格 局 可 以 派 生 出 几 个 格 局 。 例 如 从 图 1 3 ( a ) 所 示 的 格 局 可 以 派 生 出 五 个 格 局 , 如
33、图 1 3 ( b ) 所 示 , 而 从 每 一 个 新 的 格 局 又 可 派 生 出 四 个 可 能 出 现 的 格 局 。 因 此 , 若 将 从 对 奕 开 始 到 结 束 的 过 程 中 所 有 可 能 出 现 的 格 局 都 画 在 一 张 图 上 , 则 可 得 到 一 棵 倒 长 的 “树 ”。 “树 根” 是 对 奕 开 始 之 前 的 棋 盘 格 局 , 而 所 有 的 “叶 子” 就 是 可 能 出 现 的 结 局 。 对 奕 的 过 程 就 是 从 树 根 沿 树 叉 到 某 个 叶 子 的 过 程 。 “ 树” 可 以 是 某 些 非 数 值 计 算 问 题 的 数
34、 学 模 型 , 也 是 一 种 数 据 结 构 。图 1 3 井 字 棋 博 弈 树综 合 上 面 几 个 例 子 可 以 看 出 , 描 述 这 类 非 数 值 计 算 问 题 的 数 学 模 型 不 再 是 数 学 方 程 , 而 是 诸 如 表 、 树 和 图 之 类 的 数 据 结 构 。 因 此 , 简 单 说 来 , 数 据 结 构 是 一 门 研 究 非 数 值 计 算 的 程 序 设 计 问 题 中 计 算 机 的 操 作 对 象 以 及 它 们 之 间 的 关 系 和 操 作 等 等 的 学 科 。1 .2 基 本 概 念 和 术 语在 本 节 中 , 为 了 与 读 者
35、就 某 些 概 念 取 得 “共 识” , 将 对 一 些 概 念 和 术 语 赋 以 确 定 的 含 义 。 这 些 概 念 和 术 语 将 在 以 后 的 章 节 中 多 次 出 现 。数 据 ( d ata ) 是 信 息 的 载 体 , 是 对 客 观 事 物 的 符 号 表 示 。 它 能 够 被 计 算 机 所 识 别 、 存 储 和 加 工 处 理 , 是 计 算 机 程 序 加 工 的 “原 料” 。 数 据 是 指 所 有 能 输 入 计 算 机 中 , 并 被 计 算 机 程 序 处 理 的 符 号 的 总 称 。 例 如 , 一 个 利 用 数 值 分 析 方 法 解 代
36、 数 方 程 的 程 序 , 其 处 理 对 象 是 整 数 和 实 数 ; 一 个 编 译 程 序 或 文 字 处 理 程 序 的 处 理 对 象 是 字 符 串 。 因 此 , 对 计 算 机 科 学 而 言 , 数 据 的 含 义 极 为3信 息 ( infor m ation) 是 经 过 计 算 机 加 工 处 理 的 带 有 一 定 意 义 的 结 果 , 如 方 程 式 的 解 、 遥 感 图像 、 视 频 信 号 等 等 。数 据 元 素 ( data elem en t ) 是 数 据 的 基 本 单 位 , 在 计 算 机 程 序 中 通 常 作 为 一 个 整 体 进 行
37、 考 虑 和 处 理 。 例 如 , 例 1 4 中 的 “树” 中 的 一 个 棋 盘 格 局 , 例 1 3 中 的 “ 图” 中 的 一 个 圆 圈 都 被 称 为 一 个 数 据 元 素 。 有 时 , 一 个 数 据 元 素 可 由 若 干 个 数 据 项 ( data it em ) 组 成 , 例 如 , 例 1 1 中 一 本 书 的 书 目 信 息 为 一 个 数 据 元 素 , 而 书 目 信 息 中 的 每 一 项 ( 如 书 名 、 作 者 名 等 ) 为 一 个 数 据 项 。 数 据 项 是 数 据 的 不 可 分 割 的 最 小 单 位 。数 据 对 象 ( da
38、ta object ) 是 性 质 相 同 的 数 据 元 素 的 集 合 , 是 数 据 的 一 个 子 集 。 例 如 , 整 数 数据 对 象 是 集 合 N = 0 , 1 , 2 , , 字 母 字 符 数 据 对 象 是 集 合 C = A, B, , Z 。数 据 结 构 教 程简 单 地 说 , 数 据 结 构 ( data s t ructur e) 是 相 互 之 间 存 在 一 种 或 多 种 特 定 关 系 的 数 据 元 素 的 集 合 。 通 过 上 节 的 四 个 例 子 我 们 可 以 看 到 , 在 任 何 问 题 中 , 数 据 元 素 都 不 是 孤 立
39、存 在 的 , 而 是 在 它 们 之 间 存 在 着 某 种 关 系 。 这 种 数 据 元 素 相 互 之 间 的 关 系 称 为 结 构 ( s t ruct ure ) 。 根 据 数 据 元 素 之 间 关 系 的 不 同 特 性 , 通 常 有 下 列 四 类 基 本 结 构 。( 1) 集 合 结 构 中 的 数 据 元 素 之 间 除 了 “同 属 于 一 个 集 合” 的 关 系 外 , 别 无 其 它 关 系 。( 2) 线 性 结 构 结 构 中 的 数 据 元 素 之 间 存 在 一 个 对 一 个 的 关 系 。( 3) 树 形 结 构 结 构 中 的 数 据 元 素
40、 之 间 存 在 一 个 对 多 个 的 关 系 。( 4) 图 状 结 构 或 网 状 结 构 结 构 中 的 元 素 之 间 存 在 多 个 对 多 个 的 关 系 。 图 1 4 为 上 述 四 类 基 本 结 构 的 关 系 图 。 由 于 “ 集 合” 是 元 素 之 间 关 系 极 为 松 散 的 一 种 结 构 , 因 此 也 可 用 其 它 结 构 来 表 示 它 。4 数 据 结 构 的 形 式 定 义 为 :图 1 4 四 种 基 本 数 据 结 构 关 系 图数 据 结 构 是 一 个 二 元 组 Data St ruct ure = ( D, S) ( 1 1 )其 中
41、 : D 是 数 据 元 素 的 有 限 集 , S 是 D 上 关 系 的 有 限 集 。 下 面 举 两 个 简 单 例 子 说 明 之 。例 1 5 在 计 算 机 科 学 中 , 复 数 是 一 种 数 据 结 构 :Complex = ( C , R ) ( 1 2 )其 中 : C 是 含 两 个 实 数 的 集 合 c1 , c2 ; R = P , 而 P 是 定 义 在 集 合 C 上 的 一 种 关 系 c1 , c2 , 其 中 有 序 偶 c1 , c2 表 示 c1 是 复 数 的 实 部 , c2 是 复 数 的 虚 部 。例 1 6 假 设 需 要 编 制 一 个
42、 事 务 管 理 的 程 序 , 管 理 学 校 科 学 研 究 课 题 小 组 的 各 项 事 务 ,第 1 章 绪 论则 首 先 要 为 程 序 的 操 作 对 象 课 题 小 组 设 计 一 个 数 据 结 构 。 假 设 每 个 小 组 由 一 位 教 师 、 1 3 名 研 究 生 及 1 6 名 本 科 生 组 成 , 小 组 成 员 之 间 的 关 系 是 : 教 师 指 导 研 究 生 , 而 由 每 位 研 究 生 指 导 1 2 名 本 科 生 , 则 可 以 如 下 定 义 数 据 结 构 :Group = ( P , R ) ( 1 3 )其 中 : = T , G1
43、, , Gn , S1 1 , , Sn m 1 n 3 , 1 m 2 R = R1 , R2 R1 = | 1 i n , 1 n 3R2 = | 1 i n , 1 j m , 1 n 3 , 1 m 2 上 述 数 据 结 构 的 定 义 仅 是 对 操 作 对 象 的 一 种 数 学 描 述 。 换 句 话 说 , 它 是 从 操 作 对 象 抽 象 出 来 的 数 学 模 型 。 结 构 定 义 中 的 “ 关 系” 描 述 的 是 数 据 元 素 之 间 的 逻 辑 关 系 , 因 此 又 称 为 数 据 的 逻 辑 结 构 。 然 而 , 讨 论 数 据 结 构 的 目 的 是
44、 为 了 在 计 算 机 中 实 现 对 它 的 操 作 , 因 此 还 需 研 究 如 何 在 计 算 机 中 表 示 它 。存 储 结 构 ( 又 称 映 像 ) 是 数 据 结 构 在 计 算 机 中 的 表 示 , 也 称 为 数 据 的 物 理 结 构 。 它 包 括 数 据 元 素 的 表 示 和 关 系 的 表 示 。 在 计 算 机 中 表 示 信 息 的 最 小 单 位 是 二 进 制 数 的 一 位 , 叫 做 位( bit ) 。 计 算 机 中 , 可 以 用 一 个 由 若 干 位 组 合 起 来 形 成 的 一 个 位 串 表 示 一 个 数 据 元 素 ( 如 用
45、 一 个 字 长 的 位 串 表 示 一 个 整 数 , 用 八 位 二 进 制 数 表 示 一 个 字 符 等 ) , 通 常 称 这 个 位 串 为 元 素 ( ele- men t ) 或 节 点 ( node ) 。 当 数 据 元 素 由 若 干 数 据 项 组 成 时 , 位 串 中 对 应 于 各 个 数 据 项 的 子 位 串 称 为 数 据 域 ( data field) 。 因 此 , 元 素 或 节 点 可 看 成 是 数 据 元 素 在 计 算 机 中 的 映 像 。数 据 元 素 之 间 的 关 系 在 计 算 机 中 有 两 种 不 同 的 表 示 方 法 : 顺
46、序 映 像 和 非 顺 序 映 像 , 并 由 此 得 到 两 种 不 同 的 存 储 结 构 : 顺 序 存 储 结 构 和 链 式 存 储 结 构 。 顺 序 映 像 的 特 点 是 借 助 元 素 在 存 储 器 中 的 相 对 位 置 来 表 示 数 据 元 素 之 间 的 逻 辑 关 系 。 例 如 , 假 设 用 两 个 字 长 的 位 串 表 示 一 个 实 数 , 则 可 以 用 地 址 相 邻 的 四 个 字 长 的 位 串 表 示 一 个 复 数 , 如 图 1 5 ( a ) 为 表 示 复 数 zl = 3 .0 - 3 .2 i 和 z2 = 8 .9 - 1 .6i
47、 的 顺 序 存 储 结 构 。5图 1 5 复 数 存 储 结 构 示 意 图非 顺 序 映 像 的 特 点 是 借 助 指 示 元 素 存 储 地 址 的 指 针 ( poin ter ) 表 示 数 据 元 素 之 间 的 逻 辑 关 系 , 如 图 1 5 ( b ) 为 表 示 复 数 zl 的 链 式 存 储 结 构 。 其 中 实 部 和 虚 部 之 间 的 关 系 用 值 为 “ 0415”的 指 针 来 表 示 ( 0415 是 虚 部 的 存 储 地 址 ) 。 数 据 的 逻 辑 结 构 和 物 理 结 构 是 密 切 相 关 的 两 个 方 面 。 在 后 面 的 章
48、节 读 者 会 看 到 , 任 何 一 个 算 法 的 设 计 取 决 于 所 选 定 的 数 据 ( 逻 辑 ) 结 构 , 而 算 法 的 实 现 依 赖 于 采 用 的 存 储 结 构 。数 据 结 构 教 程那 么 , 在 数 据 结 构 确 立 之 后 如 何 描 述 存 储 结 构 呢 ? 虽 然 存 储 结 构 涉 及 数 据 元 素 及 其 关 系 在 存 储 器 中 的 物 理 位 置 , 但 由 于 本 书 是 在 高 级 程 序 语 言 的 层 次 上 讨 论 数 据 结 构 的 操 作 , 因 此 不 能 如 上 所 谈 的 那 样 直 接 以 内 存 地 址 来 描
49、述 存 储 结 构 。 我 们 可 以 借 用 高 级 程 序 语 言 中 提 供 的 “ 数 据 类 型” 来 描 述 它 。 例 如 可 以 用 所 有 高 级 程 序 语 言 中 都 有 的 “ 一 维 数 组” 类 型 来 描 述 顺 序 存 储 结 构 , 以 C 语 言 提 供 的 “指 针 ”来 描 述 链 式 存 储 结 构 。 假 如 把 C 语 言 看 成 是 一 个 执 行 C 指 令 和 C 数 据 类 型 的 虚 拟 处 理 器 , 那 么 本 书 中 讨 论 的 存 储 结 构 是 数 据 结 构 在 C 虚 拟 处 理 器 中 的 表 示 , 不 妨 称 它 为 虚 拟 存 储 结 构 。数 据 类 型 ( data t yp e) 是 与 数 据 结 构 密 切 相 关 的 一 个 概 念 , 用 以 刻 画 ( 程 序 ) 操 作 对 象 的 特 性 。 它 最 早 出 现 在 高 级 程 序 语 言 中 。 在 用 高 级 程 序 语 言 编 写 的 程 序 中 , 每 个 变 量 、 常 量 或 表 达 式 都