1、第1 章 数据结构与算法 经 过 对 部 分 考 生 的 调 查 以 及 对 近 年 真 题 的 总 结 分 析 , 笔 试 部 分 经 常 考 查 的 是 算 法 复 杂 度 、 数 据 结 构 的 概 念、 栈、 二叉 树的 遍历 、二 分法 查找 ,读 者应 对此 部分 进行 重点 学习 。 详 细重 点学 习知 识点 : 1 算法 的概 念、 算法 时间 复杂 度及 空间 复杂 度的 概念 2 数据 结构 的定 义、 数据 逻辑 结构 及物 理结 构的 定义 3 栈的 定义 及其 运算 、线 性链 表的 存储 方式 4 树与 二叉 树的 概念 、二 叉树 的基 本性 质、 完全 二叉
2、树的 概念 、二 叉树 的遍 历 5 二分 查找 法 6 冒泡 排序 法 1 . 1 算法 考点1 算法的基本概念 计 算机 解题 的过 程实 际上 是在 实施 某种 算法 ,这 种算 法称 为计 算机 算法 。 1 算法 的基 本特 征: 可行 性、 确定 性、 有穷 性、 拥有 足够 的情 报。 2 算法 的基 本要 素: (1 ) 算法 中对 数据 的运 算和 操作 一 个算 法由 两种 基本 要素 组成 :一 是对 数据 对象 的运 算和 操作 ;二 是算 法的 控制 结构 。 在 一般 的计 算机 系统 中, 基本 的运 算和 操作 有以 下4 类 :算 术运 算、 逻辑 运算 、关
3、 系运 算和 数据 传输 。 (2 ) 算法 的控 制结 构: 算法 中各 操作 之间 的执 行顺 序称 为算 法的 控制 结构 。 描 述算 法的 工具 通常 有传 统流 程图 、N-S 结 构化 流程 图 、 算 法描 述语 言等 。 一 个算 法一 般都 可以 用顺 序 、 选 择、 循环3 种 基本 控制 结构 组合 而成 。 考点2 算法复杂度 1. 算 法的 时间 复杂 度 算法的时间复杂度是指执行算法所需要的计算工作量。 同 一个 算法 用不 同的 语言 实现 , 或 者用 不同 的编 译程 序进 行编 译 ,或 者在 不同 的计 算机 上运 行 ,效 率均 不 同。 这表 明使
4、 用绝 对的 时间 单位 衡量 算法 的效 率是 不合 适的 。撇 开这 些与 计算 机硬 件、 软件 有关 的因 素 , 可 以认 为一 个特 定算 法 “ 运 行工 作量 “ 的 大小 ,只 依赖 于问 题的 规模 (通 常用 整数n 表 示 ) ,它 是问 题规 模的 函 数 。即 算 法的 工作 量=f (n ) 2. 算 法的 空间 复杂 度 算 法的 空间 复杂 度是 指执 行这 个算 法所 需要 的内 存空 间。 一 个算 法所 占用 的存 储空 间包 括算 法程 序所 占的 空间 、输 入的 初始 数据 所占 的存 储空 间以 及算 法执 行过 程 中所 需要 的额 外空 间
5、。 其 中额 外空 间包 括算 法程 序执 行过 程中 的工 作单 元以 及某 种数 据结 构所 需要 的附 加 存 储空 间。 如果 额外 空间 量相 对于 问题 规模 来说 是常 数, 则称 该算 法是 原地 工作 的。 在许 多实 际问 题中 ,为 了 减少 算法 所占 的存 储空 间, 通常 采用 压缩 存储 技术 ,以 便尽 量减 少不 必要 的额 外空 间。疑难解答:算法的工作量用什么来计算? 算法的工作量用算法所执行的基本运算次数来计算, 而算法所执行的基本运算次数是问题规模的函数 , 即算法的工作量=f(n ) ,其中n 是问题的规模。 1 . 2 数据结构的基本概念 考点3
6、数据结构的定义 数 据结 构作 为计 算机 的一 门学 科, 主要 研究 和讨 论以 下三 个方 面: (1 ) 数据 集合 中个 数据 元素 之间 所固 有的 逻辑 关系 ,即 数据 的逻 辑结 构; (2 ) 在对 数据 元素 进行 处理 时, 各数 据元 素在 计算 机中 的存 储关 系, 即数 据的 存储 结构 ; (3 ) 对各 种数 据结 构进 行的 运算 。 数 据 :是 对客 观事 物的 符号 表示 ,在 计算 机科 学中 是指 所有 能输 入到 计算 机中 并被 计算 机程 序处 理的 符 号 的总 称。 数 据元 素: 是数 据的 基本 单位 ,在 计算 机程 序中 通常
7、作为 一个 整体 进行 考虑 和处 理。 数 据对 象: 是性 质相 同的 数据 元素 的集 合, 是数 据的 一个 子集 。 数 据的 逻辑 结构 是对 数据 元素 之间 的逻 辑关 系的 描述 ,它 可以 用一 个数 据元 素的 集合 和定 义在 此集 合中 的 若干 关系 来表 示 。 数 据的 逻辑 结构 有两 个要 素 : 一 是数 据元 素的 集合 , 通 常记 为D ; 二 是D 上 的关 系 , 它 反 映 了数 据元 素之 间的 前后 件关 系, 通常 记为R 。 一个 数据 结构 可以 表示 成 B= (D ,R ) 其 中B 表 示数 据结 构。 为了 反映D 中 各数
8、据元 素之 间的 前后 件关 系, 一般 用二 元组 来表 示。 数 据的 逻辑 结构 在计 算机 存储 空间 中的 存放 形式 称为 数据 的存 储结 构( 也称 数据 的物 理结 构 ) 。 由 于数 据元 素在 计算 机存 储空 间中 的位 置关 系可 能与 逻辑 关系 不同 , 因 此 ,为 了表 示存 放在 计算 机存 储 空 间 中 的 各 数 据 元 素 之 间 的 逻 辑 关 系 ( 即 前 后 件 关 系 ) , 在 数 据 的 存 储 结 构 中 , 不 仅 要 存 放 各 数 据 元 素 的 信 息 ,还 需要 存放 各数 据元 素之 间的 前后 件关 系的 信息 。 一
9、 种数 据的 逻辑 结构 根据 需要 可以 表示 成多 种存 储结 构 ,常 用的 存储 结构 有顺 序 、链 接 、索 引等 存储 结 构。 而 采用 不同 的存 储结 构 ,其 数据 处理 的效 率是 不同 的 。 因 此 ,在 进行 数据 处理 时 ,选 择合 适的 存储 结构 是 很重 要的 。 考点4 线性结构与非线性结构 根 据数 据结 构中 各数 据元 素之 间前 后件 关系 的复 杂程 度 ,一 般将 数据 结构 分为 两大 类型 :线 性结 构与 非 线 性结 构。 如果 一个 非空 的数 据结 构满 足下 列两 个条 件: (1 ) 有且 只有 一个 根结 点; (2 )
10、每一 个结 点最 多有 一个 前件 ,也 最多 有一 个后 件。 则 称该 数据 结构 为线 性结 构 。线 性结 构又 称线 性表 。 在 一个 线性 结构 中插 入或 删除 任何 一个 结点 后还 应 是 线性 结构 。如 果一 个数 据结 构不 是线 性结 构, 则称 之为 非线 性结 构。疑难解答:空的数据结构是线性结构还是非线性结构? 一个空的数据结构究竟是属于线性结构还是属于非线性结构, 这要根据具体情况来确定。 如果对该数据结构的算法是按线 性结构的规则来处理的,则属于线性结构;否则属于非线性结构。 1 . 3 栈及线性链表 考点5 栈及其基本运算 1 栈的 基本 概念 栈 是限
11、 定只 在一 端进 行插 入与 删除 的线 性表 ,通 常称 插入 、 删 除的 这一 端为 栈顶 ,另 一端 为栈 底 。当 表 中 没有 元素 时称 为空 栈 。栈 顶元 素总 是后 被插 入的 元素 ,从 而也 是最 先被 删除 的元 素 ;栈 底元 素总 是最 先被 插 入的 元素 ,从 而也 是最 后才 能被 删除 的元 素。 栈是 按照 “ 先 进后 出 “ 或“ 后 进先 出 “ 的 原则 组织 数据 的。 2 栈的 顺序 存储 及其 运算 用 一维 数组S (1 m ) 作为 栈的 顺序 存储 空间 ,其 中m 为 最大 容量 。在 栈的 顺序 存储 空间S (1 m ) 中,
12、 S (bottom ) 为 栈底 元素 , S (top ) 为 栈顶 元素 。 top=0 表 示栈 空 ; top=m 表 示栈 满。 栈 的基 本运 算有 三种 :入 栈、 退栈 与读 栈顶 元素 。 (1 ) 入栈 运算 :入 栈运 算是 指在 栈顶 位置 插入 一个 新元 素。 首先 将栈 顶指 针加 一( 即 top 加1 ) , 然后 将 新 元素 插入 到栈 顶指 针指 向的 位置 。当 栈顶 指针 已经 指向 存储 空间 的最 后一 个位 置时 ,说 明栈 空间 已满 ,不 可 能再 进行 入栈 操作 。这 种情 况称 为栈 “ 上 溢 “ 错 误。 (2 ) 退 栈 运
13、算 : 退 栈 是 指 取 出 栈 顶 元 素 并 赋 给 一 个 指 定 的 变 量 。 首 先 将 栈 顶 元 素 ( 栈 顶 指 针 指 向 的 元 素 )赋 给一 个指 定的 变量 ,然 后将 栈顶 指针 减一 (即top 减1 ) 。 当栈 顶指 针为0 时 ,说 明栈 空, 不可 进行 退栈 操 作。 这种 情况 称为 栈的 “ 下 溢 “ 错 误。 (3 ) 读 栈 顶 元 素 : 读 栈 顶 元 素 是 指 将 栈 顶 元 素 赋 给 一 个 指 定 的 变 量 。 这 个 运 算 不 删 除 栈 顶 元 素 , 只 是 将 它赋 给一 个变 量, 因此 栈顶 指针 不会 改变
14、 。当 栈顶 指针 为0 时 ,说 明栈 空, 读不 到栈 顶元 素。小 技 巧 : 栈 是按 照 “ 先 进后 出 “ 或 “ 后 进先 出 “ 的 原则 组织 数据 ,但 是出 栈方 式有 多种 选择 ,在 考题 中经 常考 查各 种不 同的出栈方式。 考点6 线性链表的基本概念 在 链式 存储 方式 中 ,要 求每 个结 点由 两部 分组 成 : 一 部分 用于 存放 数据 元素 值 , 称 为数 据域 ,另 一部 分 用 于存 放指 针, 称为 指针 域。 其中 指针 用于 指向 该结 点的 前一 个或 后一 个结 点( 即前 件或 后件 ) 。 链 式存 储方 式既 可用 于表 示线
15、 性结 构, 也可 用于 表示 非线 性结 构。 (1 ) 线性 链表 线 性表 的链 式存 储结 构称 为线 性链 表。 在 某些 应用 中 ,对 线性 链表 中的 每个 结点 设置 两个 指针 ,一 个称 为左 指针 , 用 以指 向其 前件 结点 ;另 一 个 称为 右指 针, 用以 指向 其后 件结 点。 这样 的表 称为 双向 链表 。 (2 ) 带链 的栈 栈 也是 线性 表 ,也 可以 采用 链式 存储 结构 。带 链的 栈可 以用 来收 集计 算机 存储 空间 中所 有空 闲的 存储 结 点 ,这 种带 链的 栈称 为可 利用 栈。疑难解答:在链式结构中,存储空间位置关系与逻辑
16、关系是什么? 在链式存储结构中, 存储数据结构的存储空间可以不连续, 各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致 , 而数据元素之间的逻辑关系是由指针域来确定的。 1 . 4 树与二叉树 考点7 树与二叉树及其基本性质 误 区 警 示 : 满 二 叉 树 也 是 完 全 二 叉 树 , 而 完 全 二 叉 树 一 般 不 是 满 二 叉 树 。 应 该 注 意 二 者 的 区 别 。 1 、 树的 基本 概念 树(tree ) 是一 种简 单的 非线 性结 构。 在树 结构 中, 每一 个结 点只 有一 个前 件, 称为 父结 点, 没有 前件 的 结 点只 有一 个 ,称 为树
17、的根 结点 。每 一个 结点 可以 有多 个后 件 ,它 们称 为该 结点 的子 结点 。没 有后 件的 结点 称 为叶 子结 点。 在 树 结 构 中 , 一 个 结 点 所 拥 有 的 后 件 个 数 称 为 该 结 点 的 度 。 叶 子 结 点 的 度 为 0 。 在 树 中 , 所 有 结 点 中 的 最 大的 度称 为树 的度 。 2 、 二叉 树及 其基 本性 质 (1 ) 二叉 树的 定义 二 叉树 是一 种很 有用 的非 线性 结构 ,具 有以 下两 个特 点: 非 空二 叉树 只有 一个 根结 点; 每 一个 结点 最多 有两 棵子 树, 且分 别称 为该 结点 的左 子树
18、 和右 子树 。由 以 上 特 点 可 以 看 出 , 在 二 叉 树 中 , 每 一 个 结 点 的 度 最 大 为 2 , 即 所 有 子 树 ( 左 子 树 或 右 子 树 ) 也 均 为 二 叉树 ,而 树结 构中 的每 一个 结点 的度 可以 是任 意的 。另 外 ,二 叉树 中的 每个 结点 的子 树被 明显 地分 为左 子 树 和右 子树 。 在 二叉 树中 ,一 个结 点可 以只 有左 子树 而没 有右 子树 ,也 可以 只有 右子 树而 没有 左子 树 。当 一 个 结点 既没 有左 子树 也没 有右 子树 时, 该结 点即 为叶 子结 点。 (2 ) 二叉 树的 基本 性质
19、 二 叉树 具有 以下 几个 性质 : 性 质1 : 在二 叉树 的第k 层 上, 最多 有2k-1 (k 1 ) 个结 点; 性 质2 : 深度 为m 的 二叉 树最 多有2m-1 个 结点 ; 性 质3 : 在任 意一 棵二 叉树 中, 度为0 的 结点 (即 叶子 结点 )总 是比 度为2 的 结点 多一 个。 性 质4 : 具有n 个 结点 的二 叉树 ,其 深度 至少 为log2n +1 , 其中 log2n 表示 取log2n 的 整数 部分 。小 技巧 : 在二叉树的遍历中, 无论是前序遍历,中序遍历还是后序遍历,二叉树的叶子结点的先后顺序都是不变的。 3 、 满二 叉树 与完
20、全二 叉树 满 二叉 树是 指这 样的 一种 二叉 树 : 除 最后 一层 外 , 每 一层 上的 所有 结点 都有 两个 子结 点 。 在 满二 叉树 中 , 每 一层 上的 结点 数都 达到 最大 值, 即在 满二 叉树 的第k 层 上有2k-1 个 结点 ,且 深度 为m 的 满二 叉树 有2m 1 个 结 点。 完 全二 叉树 是指 这样 的二 叉树 : 除 最后 一层 外 , 每 一层 上的 结点 数均 达到 最大 值 ;在 最后 一层 上只 缺少 右 边的 若干 结点 。 对 于完 全二 叉树 来说 , 叶 子结 点只 可能 在层 次最 大的 两层 上出 现 :对 于任 何一 个结
21、 点 ,若 其右 分支 下的 子 孙结 点的 最大 层次 为p , 则其 左分 支下 的子 孙结 点的 最大 层次 或为p , 或为p+1 。 完 全二 叉树 具有 以下 两个 性质 : 性 质5: 具 有n 个 结点 的完 全二 叉树 的深 度为 log2n +1 。 性 质6: 设 完全 二叉 树共 有n 个 结点 。 如 果从 根结 点开 始 , 按 层次 ( 每 一层 从左 到右 ) 用 自然 数1 ,2 , , n 给 结点 进行 编号 ,则 对于 编号 为k (k=1 ,2 , ,n ) 的结 点有 以下 结论 : 若k=1 , 则该 结点 为根 结点 ,它 没有 父结 点; 若k
22、1 , 则该 结点 的父 结点 编号 为INT (k/2 ) 。 若2k n , 则编 号为k 的 结点 的左 子结 点编 号为2k ; 否则 该结 点无 左子 结点 (显 然也 没有 右子 结点 ) 。 若2k+1 n , 则编 号为k 的 结点 的右 子结 点编 号为2k+1 ; 否则 该结 点无 右子 结点 。 考点8 二叉树的遍历 在 遍历 二叉 树的 过程 中 ,一 般先 遍历 左子 树 ,再 遍历 右子 树 。在 先左 后右 的原 则下 ,根 据访 问根 结点 的 次 序, 二叉 树的 遍历 分为 三类 :前 序遍 历、 中序 遍历 和后 序遍 历。 (1 ) 前 序 遍 历 :
23、先 访 问 根 结 点 、 然 后 遍 历 左 子 树 , 最 后 遍 历 右 子 树 ; 并 且 , 在 遍 历 左 、 右 子 树 时 , 仍 然 先访 问根 结点 ,然 后遍 历左 子树 ,最 后遍 历右 子树 。 (2 ) 中 序 遍 历 : 先 遍 历 左 子 树 、 然 后 访 问 根 结 点 , 最 后 遍 历 右 子 树 ; 并 且 , 在 遍 历 左 、 右 子 树 时 , 仍 然 先遍 历左 子树 ,然 后访 问根 结点 ,最 后遍 历右 子树 。 (3 ) 后 序 遍 历 : 先 遍 历 左 子 树 、 然 后 遍 历 右 子 树 , 最 后 访 问 根 结 点 ; 并
24、且 , 在 遍 历 左 、 右 子 树 时 , 仍 然 先遍 历左 子树 ,然 后遍 历右 子树 ,最 后访 问根 结点 。疑难解答:树与二叉树的不同之处是什么? 在二叉树中,每一个结点的度最大为2 ,即所有子树(左子树或右子树)也均为二叉树,而树结构中的每一个结点的度可 以是任意的。 1 . 5 查找技术 考点9 顺序查找 查 找是 指在 一个 给定 的数 据结 构中 查找 某个 指定 的元 素 。从 线性 表的 第一 个元 素开 始 ,依 次将 线性 表中 的 元素 与被 查找 的元 素相 比较 ,若 相等 则表 示查 找成 功 ; 若 线性 表中 所有 的元 素都 与被 查找 元素 进行
25、 了比 较但 都不 相等 ,则 表示 查找 失败 。 在 下列 两种 情况 下也 只能 采用 顺序 查找 : (1 ) 如果 线性 表为 无序 表, 则不 管是 顺序 存储 结构 还是 链式 存储 结构 ,只 能用 顺序 查找 。 (2 ) 即使 是有 序线 性表 ,如 果采 用链 式存 储结 构, 也只 能用 顺序 查找 。 考点10 二分法查找 二 分法 只适 用于 顺序 存储 的, 按非 递减 排列 的有 序表 ,其 方法 如下 : 设 有序 线性 表的 长度 为n , 被查 找的 元素 为i , (1 ) 将i 与 线性 表的 中间 项进 行比 较; (2 ) 若i 与 中间 项的 值
26、相 等, 则查 找成 功; (3 ) 若i 小 于中 间项 ,则 在线 性表 的前 半部 分以 相同 的方 法查 找; (4 ) 若i 大 于中 间项 ,则 在线 性表 的后 半部 分以 相同 的方 法查 找。疑难解答:二分查找法适用于哪种情况? 二分查找法只适用于顺序存储的有序表。 在此所说的有序表是指线性表中的元素按值非递减排列 (即从小到大, 但允许相 邻元素值相等) 。 这 个过 程一 直进 行到 查找 成功 或子 表长 度为0 为 止。 对 于长 度为n 的 有序 线性 表, 在最 坏情 况下 ,二 分查 找只 需要 比较log2n 次 。 1 . 6 排序技术 考点11 交换类排序
27、法 冒 泡排 序法 和快 速排 序法 都属 于交 换类 排序 法。 (1 ) 冒泡 排序 法 首 先, 从表 头开 始往 后扫 描线 性表 ,逐 次比 较相 邻两 个元 素的 大小 ,若 前面 的元 素大 于后 面的 元素 ,则 将 它们 互换 ,不 断地 将两 个相 邻元 素中 的大 者往 后移 动, 最后 最大 者到 了线 性表 的最 后。 然 后, 从后 到前 扫描 剩下 的线 性表 ,逐 次比 较相 邻两 个元 素的 大小 ,若 后面 的元 素小 于前 面的 元素 ,则 将 它们 互换 ,不 断地 将两 个相 邻元 素中 的小 者往 前移 动, 最后 最小 者到 了线 性表 的最 前面
28、 。 对 剩下 的线 性表 重复 上述 过程 ,直 到剩 下的 线性 表变 空为 止, 此时 已经 排好 序。 在 最坏 的情 况下 ,冒 泡排 序需 要比 较次 数为n (n 1 )/2 。 (2 ) 快速 排序 法 它 的 基 本 思 想 是 : 任 取 待 排 序 序 列 中 的 某 个 元 素 作 为 基 准 ( 一 般 取 第 一 个 元 素 ) , 通 过 一 趟 排 序 , 将 待 排 元素 分为 左右 两个 子序 列 ,左 子序 列元 素的 排序 码均 小于 或等 于基 准元 素的 排序 码 ,右 子序 列的 排序 码则 大 于基 准元 素的 排序 码, 然后 分别 对两 个子
29、 序列 继续 进行 排序 ,直 至整 个序 列有 序。疑难解答:冒泡排序和快速排序的平均执行时间分别是多少? 冒泡排序法的平均执行时间是O (n 2 ) ,而快速排序法的平均执行时间是O (nlog 2n ) 。 1 . 7 例题详解 一 、选 择题 【 例1 】 算法 的时 间复 杂度 取决 于_ 。 ( 考点2 ) A ) 问题 的规 模 B ) 待处 理的 数据 的初 态 C ) 问题 的难 度 D )A ) 和B ) 解 析 :算 法的 时间 复杂 度不 仅与 问题 的规 模有 关 , 在 同一 个问 题规 模下 ,而 且与 输入 数据 有关 。即 与输 入 数据 所有 的可 能取 值
30、范 围、 输入 各种 数据 或数 据集 的概 率有 关。 答 案:D ) 【 例2 】 在数 据结 构中 ,从 逻辑 上可 以把 数据 结构 分成_ 。 ( 考点3 )A ) 内部 结构 和外 部结 构 B ) 线性 结构 和非 线性 结构 C ) 紧凑 结构 和非 紧凑 结构 D ) 动态 结构 和静 态结 构 解 析 :逻 辑结 构反 映数 据元 素之 间的 逻辑 关系 , 线 性结 构表 示数 据元 素之 间为 一对 一的 关系 ,非 线性 结 构 表示 数据 元素 之间 为一 对多 或者 多对 一的 关系 ,所 以答 案为B ) 。 答 案:B ) 【 例3 】 以下_ 不 是栈 的基
31、 本运 算 。 ( 考点5 ) A ) 判断 栈是 否为 素空 B ) 将栈 置为 空栈 C ) 删除 栈顶 元素 D ) 删除 栈底 元素 解 析 : 栈 的 基 本 运 算 有 : 入 栈 , 出 栈 ( 删 除 栈 顶 元 素 ) , 初 始 化 、 置 空 、 判 断 栈 是 否 为 空 或 满 、 提 取 栈 顶 元素 等, 对栈 的操 作都 是在 栈顶 进行 的。 答 案:D ) 【 例4 】 链表 不具 备的 特点 是_ 。 ( 考点6 ) A ) 可随 机访 问任 意一 个结 点 B ) 插入 和删 除不 需要 移动 任何 元素 C ) 不必 事先 估计 存储 空间 D ) 所
32、需 空间 与其 长度 成正 比 解 析: 顺序 表可 以随 机访 问任 意一 个结 点, 而链 表必 须从 第一 个数 据结 点出 发, 逐一 查找 每个 结点 。所 以 答案 为A ) 。 答 案:A ) 【 例5 】 已 知 某 二 叉 树 的 后 序 遍 历 序 列 是 DACBE , 中 序 遍 历 序 列 是DEBAC , 则 它 的 前 序 遍 历 序 列 是 _ 。 ( 考点8 ) A )ACBED B )DEABC C )DECAB D )EDBAC 解 析: 后序 遍历 的顺 序是 “ 左 子树 右 子树 根 结点 “ ; 中序 遍历 顺序 是 “ 左 子树 根 结点 右 子
33、树 “ ;前 序 遍历 顺序 是 “ 根 结点 左 子树 右 子树 “ 。 根 据各 种遍 历算 法 , 不 难得 出前 序遍 历序 列是EDBAC 。 所 以答 案 为D ) 。 答 案:D ) 【 例6 】设 有一 个已 按各 元素 的值 排好 序的 线性 表 (长 度大 于2 ) ,对 给定 的值k ,分 别用 顺序 查找 法和 二 分 查找 法查 找一 个与k 相 等的 元素 , 比 较的 次数 分别 是s 和b , 在 查找 不成 功的 情况 下 ,s 和b 的 关系 是_ 。 ( 考点9 ) A )s=b B )sb C )s log2n +1 。 答 案:B ) 【 例7 】 在
34、 快 速 排 序 过 程 中 , 每 次 划 分 , 将 被 划 分 的 表 ( 或 子 表 ) 分 成 左 、 右 两 个 子 表 , 考 虑 这 两 个 子 表 ,下 列结 论一 定正 确的 是_ 。 ( 考点11 ) A ) 左、 右两 个子 表都 已各 自排 好序 B ) 左边 子表 中的 元素 都不 大于 右边 子表 中的 元素 C ) 左 边子 表的 长度 小于 右边 子表 的长 度 D ) 左、 右两 个子 表中 元素 的平 均值 相等 解 析 : 快 速 排 序 基 本 思 想 是 : 任 取 待 排 序 表 中 的 某 个 元 素 作 为 基 准 ( 一 般 取 第 一 个
35、元 素 ) , 通 过 一 趟 排 序, 将 待排 元素 分为 左右 两个 子表 ,左 子表 元素 的排 序码 均小 于或 等于 基准 元素 的排 序码 ,右 子表 的排 序码 则 大于 基准 元素 的排 序码 ,然 后分 别对 两个 子表 继续 进行 排序 ,直 至整 个表 有序 。 答 案:B ) 二 、填 空题 【 例1 】问 题处 理方 案的 正确 而完 整的 描述 称为_ 。 ( 考点1 ) 解 析: 计 算机 解题 的过 程实 际上 是在 实施 某种 算法 ,这 种算 法称 为计 算机 算法 。 答 案: 算法 【 例2 】 一个 空的 数据 结构 是按 线性 结构 处理 的, 则
36、属 于_ 。 ( 考点4 )解 析 :一 个空 的数 据结 构是 线性 结构 或是 非线 性结 构 ,要 根据 具体 情况 而定 。如 果对 数据 结构 的运 算是 按 线性 结构 来处 理的 ,则 属于 线性 结构 ,否 则属 于非 线性 结构 。 答 案: 线性 结构 【 例3 】 设 树 的 度 为 , 其 中 度 为 、 、 和 的 结 点 的 个 数 分 别 为 、 、 、 , 则 中 叶 子 结 点的 个数 为_ 。 ( 考点7 ) 解 析: 根据 树的 性质 :树 的结 点数 等于 所有 结点 的度 与对 应的 结点 个数 乘积 之和 加 。 因 此树 的结 点数 为 16 。叶
37、 子结 点数 目等 于树 结点 总数 减去 度不 为 的 结点 数之 和, 即16 ( ) 。 答 案:8 【 例4 】 二分 法查 找的 存储 结构 仅限 于_ 且 是有 序的 。 ( 考点10 ) 解 析 :二 分查 找 , 也 称折 半查 找 ,它 是一 种高 效率 的查 找方 法 。但 二分 查找 有条 件限 制 : 要 求表 必须 用 顺 序存 储结 构, 且表 中元 素必 须按 关键 字有 序( 升 序或 降序 均可 ) 。 答 案: 顺序 存储 结构 第 2 章 程序设计基础 经 过 对 部 分 考 生 的 调 查 以 及 对 近 年 真 题 的 总 结 分 析 , 笔 试 部
38、分 经 常 考 查 的 是 结 构 化 程 序 设 计 的 原 则 、 面 向对 象方 法的 基本 概念 ,读 者应 对此 部分 进行 重点 学习 。 详 细重 点学 习知 识点 : 1 结构 化程 序设 计方 法的 四个 原则 2 对象 、类 、消 息、 继承 的概 念、 类与 实例 的区 别 2 . 1 结构化程序设计 考点1 结构化程序设计的原则 20 世 纪70 年 代提 出了 “ 结 构化 程序 设计 “ 的 思想 和方 法 。结 构化 程序 设计 方法 引入 了工 程化 思想 和结 构化 思 想 ,使 大型 软件 的开 发和 编程 得到 了极 大的 改善 。 结 构化 程序 设计
39、方法 的主 要原 则为 : 自 顶向 下 、逐 步求 精 、模 块化 和限 制使 用goto 语 句。疑难解答:如何进行自顶向下设计方法? 程序设计时, 应先考虑总体 , 后考虑细节 ; 先考虑全局目标, 后考虑局部目标; 不要一开始就过多追求众多的细节, 先从 最上层总目标开始设计,逐步使问题具体化。 2 . 2 面向对象的程序设计 考点2 面向对象方法的基本概念 误 区 警 示 : 当 使 用 “ 对 象 “ 这 个 术 语 时 , 既 可 以 指 一 个 具 体 的 对 象 , 也 可 以 泛 指 一 般 的 对 象 , 但 是 当 使 用 “ 实 例 “ 这 个 术 语 时 , 必 须
40、 是 指 一 个 具 体 的 对 象 。 面 向对 象方 法涵 盖对 象及 对象 属性 与方 法、 类、 继承 、多 态性 几个 基本 要素 。 (1 ) 对象 通 常把 对对 象的 操作 也称 为方 法或 服务 。 属 性即 对象 所包 含的 信息 , 它 在设 计对 象时 确定 ,一 般只 能通 过执 行对 象的 操作 来改 变 。属 性值 应该 指 的 是纯 粹的 数据 值, 而不 能指 对象 。操 作描 述了 对象 执行 的功 能, 若通 过信 息的 传递 ,还 可以 为其 他对 象使 用。 对 象具 有如 下特 征: 标识 惟一 性、 分类 性、 多态 性、 封装 性、 模块 独立
41、性。 (2 ) 类和 实例 类 是具 有共 同属 性 、共 同方 法的 对象 的集 合 。它 描述 了属 于该 对象 类型 的所 有对 象的 性质 ,而 一个 对象 则 是其 对应 类的 一个 实例 。 类 是关 于对 象性 质的 描述 ,它 同对 象一 样, 包括 一组 数据 属性 和在 数据 上的 一组 合法 操作 。 (3 ) 消息 消 息是 实例 之间 传递 的信 息 ,它 请求 对象 执行 某一 处理 或回 答某 一要 求的 信息 ,它 统一 了数 据流 和控 制 流 。 一 个消 息由 三部 分组 成: 接收 消息 的对 象的 名称 、消 息标 识符 (消 息名 )和 零个 或多
42、个参 数。 (4 ) 继承 广 义地 说, 继承 是指 能够 直接 获得 已有 的性 质和 特征 ,而 不必 重复 定义 它们 。 继 承分 为单 继承 与多 重继 承 。单 继承 是指 , 一 个类 只允 许有 一个 父类 ,即 类等 级为 树形 结构 。多 重继 承 是 指, 一个 类允 许有 多个 父类 。 (5 ) 多态 性 对 象根 据所 接收 的消 息而 做出 动作 ,同 样的 消息 被不 同的 对象 接收 时可 导致 完全 不同 的行 动 ,该 现象 称 为 多态 性。疑难解答:能举一下现实中的对象及其属性和操作吗? 一辆汽车是一个对象,它包含了汽车的属性(如颜色、型号等)及其操
43、作(如启动、刹车等) 。一个窗口是对象,它包含 了窗口的属性(如大小、颜色等)及其操作(如打开、关闭等) 。 2 . 3 例题详解 一 、选 择题 【 例1 】 结构 化程 序设 计方 法提 出于_ 。 ( 考点1 ) A )20 世 纪50 年 代 B )20 世 纪60 年 代 C )20 世 纪70 年 代 D )20 世 纪80 年 代 解 析 :20 世 纪70 年 代 提 出 了 “ 结 构 化 程 序 设 计 (structured programming ) “ 的 思 想 和 方 法 。 结 构 化 程 序 设 计 方法 引入 了工 程化 思想 和结 构化 思想 ,使 大型
44、软件 的开 发和 编程 得到 了极 大的 改善 。 答 案:C ) 【 例2 】 结构 化程 序设 计方 法的 主要 原则 有下 列4 项 ,不 正确 的是_ 。 ( 考点1 ) A ) 自下 向上 B ) 逐步 求精 C ) 模块 化 D ) 限制 使用goto 语 句 解 析: 结构 化程 序设 计方 法的 主要 原则 为: (1 ) 自顶 向下 :即 先考 虑总 体, 后考 虑细 节; 先考 虑全 局目 标, 后考 虑局 部目 标。 (2 ) 逐步 求精 :对 复杂 问题 ,应 设计 一些 子目 标作 过渡 ,逐 步细 化。 (3 ) 模 块 化 : 把 程 序 要 解 决 的 总 目
45、标 分 解 为 分 目 标 , 再 进 一 步 分 解 为 具 体 的 小 目 标 , 把 每 个 小 目 标 称 为 一个 模块 。 (4 ) 限制 使用goto 语 句。 答 案:A ) 【 例3 】 面向 对象 的开 发方 法中 ,类 与对 象的 关系 是_ 。 ( 考点2 ) A ) 抽象 与具 体 B ) 具体 与抽 象 C ) 部分 与整 体 D ) 整体 与部 分 解 析 :现 实世 界中 的很 多事 物都 具有 相似 的性 质 ,把 具有 相似 的属 性和 操作 的对 象归 为类 ,也 就是 说类是 具有 共同 属性 、共 同方 法的 对象 的集 合 , 是 对对 象的 抽象
46、。它 描述 了该 对象 类型 的所 有对 象的 性质 ,而 一 个 对象 则是 对应 类的 一个 具体 实例 。所 以本 题正 确答 案为A ) 项。 答 案:A ) 二 、填 空题 【 例1 】 在 面向 对象 方法 中 , 使 用已 经存 在的 类定 义作 为基 础建 立新 的类 定义 , 这 样的 技术 叫做_ 。 ( 考点2 ) 解 析: 继承 是面 向对 象方 法的 一个 主要 特征 。继 承是 使用 已有 的类 定义 作为 基础 建立 新类 的定 义技 术。 已 有 的类 可当 作基 类来 引用 ,则 新类 相应 地可 当作 派生 类来 引用 。 答 案: 继承 【 例2 】 对象
47、 的基 本特 点包 括_ 、 分类 性、 多态 性、 封装 性和 模块 独立 性好 等5 个 特点 。 ( 考点2 ) 解 析: 对象 具有 如下 的基 本特 点: (1 ) 标识 惟一 性。 对象 是可 区分 的, 并且 由对 象的 内在 本质 来区 分; (2 ) 分类 性。 可以 将具 有相 同属 性和 操作 的对 象抽 象成 类; (3 ) 多态 性。 同一 个操 作可 以是 不同 对象 的行 为; (4 ) 封装 性。 只能 看到 对象 的外 部特 征, 无需 知道 数据 的具 体结 构以 及实 现操 作的 算法 ; (5 ) 模块 独立 性。 面向 对象 是由 数据 及可 以对 这
48、些 数据 施加 的操 作所 组成 的统 一体 。 答 案: 标识 惟一 性 【 例3 】 对 象 根 据 所 接 收 的 消 息 而 做 出 动 作 , 同 样 的 消 息 被 不 同 的 对 象 所 接 收 时 可 能 导 致 完 全 不 同 的 行 为 ,这 种现 象称 为_ 。 ( 考点2 ) 解 析: 对象 根据 所接 收的 消息 而做 出动 作, 同样 的消 息被 不同 的对 象接 收时 可导 致完 全不 同的 行为 ,该 现 象称 为多 态性 。 答 案: 多态 性 第 3 章 软件工程基础 经 过 对 部 分 考 生 的 调 查 以 及 对 近 年 真 题 的 总 结 分 析 ,
49、 笔 试 部 分 经 常 考 查 的 是 软 件 生 命 周 期 、 软 件 设 计 的 基本 原理 ,软 件测 试的 目的 、软 件调 试的 基本 概念 ,读 者应 对此 部分 进行 重点 学习 。 详 细重 点学 习知 识点 : 1 软件 的概 念、 软件 生命 周期 的概 念及 各阶 段所 包含 的活 动 2 概要 设计 与详 细设 计的 概念 、模 块独 立性 及其 度量 的标 准、 详细 设计 常用 的工 具 3 软件 测试 的目 的、 软件 测试 的4 个 步骤 、 4 软件 调试 的任 务 3 . 1 软件工程基本概念 考点1 软件定义与软件特点 软 件指 的是 计算 机系 统中 与硬 件相 互依 存的 另一 部分 , 包 括程 序 、数 据和 相关 文档 的完 整集 合 。程 序是 软 件开 发人