收藏 分享(赏)

985院校数据结构试卷.docx

上传人:hyngb9260 文档编号:7228822 上传时间:2019-05-10 格式:DOCX 页数:24 大小:177.48KB
下载 相关 举报
985院校数据结构试卷.docx_第1页
第1页 / 共24页
985院校数据结构试卷.docx_第2页
第2页 / 共24页
985院校数据结构试卷.docx_第3页
第3页 / 共24页
985院校数据结构试卷.docx_第4页
第4页 / 共24页
985院校数据结构试卷.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、一、算法填空题(20 分)大连理工大学 2002 年硕士入学试题数据结构部分(共 50 分)1对以下函数填空,实现将头指针为 h 的单链表逆置,即原链表的第一个结点变成逆 置后新 链 表 的最 后一 个结 点, 原链 表的 第二 个结 点变 成新链 表的 倒数 第二 个结 点, 如此 等等 , 直 到 最 后 一 个 结 点 作 为 新 链 表 的 第 一 个 结 点 , 并 返 回 指 向 该 结 点 的 指 针 。 设 单 链 表 结 点 类 型 的定义为typedef struct nodeint data;strcut node *next;NODE;NODE *dlbnz(NODE*

2、h) NODE *p,*q ; q=NULL;while(h)p=h;h=h-next;return q;2假设算术表达式由字符串 b 表示,其中可以包含三种括号:圆括号和方括号及花括 号 , 其 嵌 套 的 顺 序 随 意 , 如 ()。 请 对 以 下 函 数 填 空 , 实 现 判 别 给 定 表 达 式 中 所 含 括 号 是 否正确配对出现的算法。#define M 10 int khjc(char *b) char sM;int i,j=0,f=1; j=0;for(i=0; f|bI!= ) f=0;return f s=(BiNode*)malloc(sizeof(BiNode

3、); s-key=x;s-lc=NULL;s-rc=NULL; q=NULL;if(r=NULL) r=s;return(r); p=r;while( ) q=p;if( ) p=p-lc;else p=p-rcif(xkey) ; else ;return;清华大学 2001 年数据结构与程序设计试题试题内容:一、试给出下列有关并查集(mfsets)的操作序列的运算结果:union(1,2) ,union(3,4),union(3,5) ,union(1,7),union(3 ,6) , union(8,9) ,union(1,8),union(3 ,10) ,union(3,11), un

4、ion(3,12) , union(3, 13), union(14, 15), union(16, 0), union(14, 16), union(1, 3), union(1,14) 。 (union 是合并运算,在以前的书中命名为 merge)要求:(1)对于 union(i,j),以 i 作为 j 的双亲;(5 分)(2)按 i 和 j 为根的树的高度实现 union(i,j),高度大者为高度小者的双亲;(5 分)(3)按 i 和 j 为根的树的结点个数实现 union(i, j), 结 点 个 数 大 者 为 结 点 个 数 小 者 的 双 亲 。 (5 分 )二、设在 4 地(A

5、,B ,C,D)之间架设有 6 座桥,如下图所示:要求从某一地出发,经过每座桥恰巧一次,最后仍回到原地。(1)试就以上图形说明:此问题有解的条件是什么?(5 分)(2)设图中的顶点数为 n,试用 C 或 Pascal 描述与求解此问题有关的数据结构并编写一 个算法,找出满足要求的一条回路。(10 分)三、针对以下情况确定非递归的归并排序的运行时间(数据比较次数与移动次数) :(1)输人的 n 个数据全部有序;(5 分) (2)输入的 n 个数据全部逆向有序;(5 分) (3)随机地输入几个数据。(5 分) 四、简单回答有关 A VL 树的问题。(1)在有 N 个结点的 AVL 树 中 , 为

6、结 点 增 加 一 个 存 放 结 点 高 度 的 数 据 成 员 , 那 么 每 一 个 结点需要增加多少个字位(bit)?(5 分)(2)若每一个结点中的高度计数器有 8bit, 那 么 这 样 的 AVL 树可以有多少层?最少有多少 个关键码?(5 分)五 、 一 个 散 列 表 包 含 hashSize=13 个 表 项 , 其 下 标 从 0 到 12, 采 用 线 性 探 查 法 解 决 冲 突 。 请按以下要求,将下列关键码散列到表中。10 100 32 45 58 126 3 29 200 400 0(1)散列函数采用除留余数法,用hashSize(取余运算) 将各关键码映像到

7、表中。请指出每一个产生冲突的关键码可能产生多少次冲突。(7 分) (2)散 列函 数采 用先 将 关键 码 各位 数字 折叠 相加 , 再用 hashSize 将 相加 的 结果映 像到 表中的办法。请指出每一个产生冲突的关键码可能产生多少次冲突。(8 分) 六、设一棵二叉树的结点定义为struct BinTreeNode ElemType data;BinTreeNode *leftChild,*rightChild;现采用输入广义表表示建立二叉树。具体规定如下: (1)树的根结点作为由子树构成的表的表名放在表的最前面; (2)每个结点的左子树和右子树用逗号隔开。若仅有右子树,没有左子树,逗

8、号不能省略。(3)在整个 广义 表表 示输 入 的结尾 加上 一个 特殊 的符 号( 例如 “#”)表示 输入 结 果。 ; 例 如 , 对 于 如 右 图 所 示 的 二 叉 树 , 其 广 义 表 表 示 为 A(B(D, E(G, ),C(,F)此算法的基本思路是:依次从保存广义表的字符串 ls 中输入每个字 符。若遇到的是字母(假定以字母作为结点的值 ),则表示是结点的值, 应 为 它 建 立 一 个 新 的 结 点 , 并 把 该 结 点 作 为 左 子 女 当 (k=1)或 右 子 女 (当 k=2)链 接 到 其 双 亲 结 点 上 。 若 遇 到 的 是 左 括 号 ”(”,

9、则 表 明 子 表 的 开 始 , 将 A 置 为 1;若 遇到 的是 右括 号 ”)”,则 表明 子表 结束。 若遇 到的 是逗号”,”,则表示以左子女为根的子树处理完毕,应接着处理以右子女为根的子树,将 A 置 为 2。在算法中使用了一个栈 s,在进入子表之前,将根结点指针进栈,以便括号内的子女链 接之用。在子表处理结束时退栈。相关的栈操作如下:MakeEmpty(s)置空栈 Push(s,p) 元素 p 进栈 Pop(s)退栈 Top(s)存取栈顶元素的函数下 面 给 出 了 建 立 二 叉 树 的 算 法 , 其 中 有 5 个 语 句 缺 失 。 请 阅 读 此 算 法 并 把 缺

10、失 的 语 句 补上。(每空 3 分)Void CreateBinTree(BinTreeNode *&BT,char ls) Stacks; MakeEmpty(s); BT=NULL; /置二叉树 BinTreeNode *p;int k;istream ins(ls); /把串 ls 定义为输入字符串流对象 ins char ch;insch; /从 ins 顺序读入一个字符while(ch!=”#”) /逐 个 字 符 处 理 , 直 到 遇 到 #为 止 switch(ch) case(: (1)k=1; break;case ):pop(s); break;case , (2) b

11、reak;default:p=new BinTreeNode;(3)p-leftChild=NULL; p-rightChfild=NULL;if(BT=NULL)(4)else if(k=1) top(s)-leftChild=p; else top(8)-rightChild=p;(5)|七 、 下 面 是 一 个 用 C 编 写 的 快 速 排 序 算 法 。 为 了 避 免 最 坏 情 况 , 取 基 准 记 录 pivot 采用 从 left, right 和 mid= (1eft+right)/2中 取 中 间 值 , 并 交 换 到 right 位 置 的 办 法 。 数 组 a

12、 存放待 排序的一组记录,数据类型为 Type, left 和 right 是待排序子区间的最左端点和最右端点。Void quicksort(Type a&#, int lefl,int right) Type temp; if(leftpivot) temp=ai;ai=aright;aright=temp; quicksort(a,left,i-1); /递 归 排 序 左 子 区 间 quicksort(a, i+1, right); /递 归 排 序 右 子 区 间(1)用 C 或 Pascal 实现三者取中子程序 median3(a,left,right);(5 分)(2)改写 qu

13、icksoft 算法,不用栈消去第二个递归调用 quicksort(a,j+1 ,right);(5 分) (3)继续改写 quicksort 算法,用栈消去剩下的递归调用。(5 分)上海交通大学 2001 年数据结构及程序设计试题注意:程序设计请采用 C 语言,程序应有注解及说明。回答问题简洁、清晰全面。不 得采用类 C 之类的语言写程序。一 、 参 见 下 图 , 该 有 向 图 是 AOE 网 络 。 该 图 上 已 标 出 了 源 点 及 汇 点 , 并 给 出 了 活 动 (边 ) 的权值。请求出该 AOE 网络的关键路径,以及事件(结点) 的最早发生时间及最迟发生时间。 (本 题

14、8 分)二 、 已 知 某 二 叉 树 的 每 个 结 点 , 要 么 其 左 、 右 子 树 皆 为 空 , 要 么 其 左 、 右 子 树 皆 不 空 。 又知该二叉树的前序序列为( 即先根次序 ):J、F、D 、B 、 A、C 、E、H 、X、I、K;后序序 列为( 即后根次序 ):A、C、B 、E、D 、X、I 、H 、F、K 、 Jo 请给出该二叉树的中序序列( 即 中根次序) ,并画出相应的二叉树树形。 (本题 8 分)三、回答下列问题:(本题 10 分)1)具有 N 个结点且互不相似的二叉树的总数是多少?2)具有 N 个结点且不同形态的树的总数是多少?3)对二叉树而言,如果它的叶

15、子结点总数为 N 0,度为 2 的结点的总为 N 2,则 N 0 和 N 2之间的关系如何?4)二叉树是否是结点的度最多为 2 的树? 请说明理由。5)具有 n 片叶子的哈夫曼树(即赫夫曼树)中,结点总数为多少? 四 、 在 外 部 分 类 时 , 为 了 减 少 读 、 写 的 次 数 , 可 以 采 用 k 路平衡归并的最佳归并树模式。当初始 归并段 的总数 不足 时,可 以增加 长度为 零的 “虚段” 。请问 增加 的“虚 段”的 数目为 多少?请推导之。设初始归并段的总数为 m。(本题 8 分)五 、 对 平 衡 的 排 序 二 叉 树 进 行 删 除 结 点 的 操 作 , 必 须

16、保 证 删 除 之 后 平 衡 树 中 的 每 个 结 点 的平衡因子是+1 ,-1,0 三种情况之一,且该树仍然是排序二叉树。现假定删除操作是在 p 结 点 的 左 子 树 上 进 行 的 , 且 该 左 子 树 原 高 为 h-l, 现 变 为 h-2。 因 此 , 必 须 从 p 的左子树沿着 到 根 的 方 向 回 溯 调 整 结 点 的 平 衡 因 子 , 并 进 行 树 形 的 调 整 。 设 p 是调整时遇到的第一个平衡 因子力图由-1 变成-2 的最年轻的“前辈”结点。我们知道,以 p 为根的子树经调整后,高 度有可能减少 1。 试 用 图 形 把 调 整 前 及 调 整 后

17、的 相 关 结 点 的 平 衡 因 子 、 树 形 表 示 出 来 ; 仅 仅 针对调整后子树的高度减少 1 的情况即可。注意,罗列出所有可能的情况。上图可供参考。(本题 10 分)六 、 某 算 法 由 下 述 方 程 表 示 。 请 求 出 该 算 法 的 时 间 复 杂 性 的 级 别 (以 大 O 形 式 表 示 )。 注 意 n7 求 解 问 题 的 规 模 , 设 n 是 3 的 正 整 数 幂 。 (本 题8 分)Tn=1 如果 n=15T(n/3)+n 如果 n1七、如右图所示,该二叉树是某棵有序树变换成 的相对应的二叉树。试给出原来的有序树的形状。并回答以下问题:1)原有序树

18、是度为多少的树?2)原有序树的叶子结点有哪几个?3)是否所有的二叉树都可以找到相对应的有序树?必须满足什么条件 ?(本题 5 分) 八 、 在 排 序 二 叉 树 上 进 行 查 找 操 作 时 , 设 对 树 中 的 每 个 结 点 查 找 概 率 相 同 。 设 由 n 个 结点 构 成 的 序 列 生 成 的 排 序 二 叉 树 是 “随 机 ”的 。 试 求 出 在 成 功 查 找 的 情 况 下 , 平 均 查 找 长 度 是多少?为了简单起见,最后得到的递推式可不予求解。(本题 8 分)九、设从键盘每次输入两个字符。如 A、B,则表示存在着一条由数据场之值为字符 A 的结点到数据场

19、之值为字符 B 的结点的有向边。依此输入这些 有向边,直至出现字符!为止。试设计一个程序,生成该有向图的邻接表及逆邻接表。必须 交待所用的结构、变量、加以适当注解。(本题 20 分) 十 、 设 二 叉 树 中 结 点 的 数 据 场 之 值 为 一 字 符 。 采 用 二 叉 链 表 的 方 式 存 储 该 二 叉 树 中 的 所 有结点 , 设 p 为指 向 树 根结 点的指 针 。 设 计一 个程 序在 该二 叉 树中 寻找 数据 场之 值为 key(key 为一变量,变量内容为一字符) 的那个结点的所有祖先。设二叉树中结点数据场之值互不重 复。( 本题 15 分)注意:有些书上将二叉树

20、的二叉链表存储形式称之为标准存储形式。南开大学 2001 年数据结构试题一、选择题(每小题 3 分,共 21 分) 在下列各题中,每题之后均有若干个备选答案,请选出所有正确的答案,填人“ ”处。答案请写在答题纸上。1任何一个无向连通图的最小生成树 。只有一棵 有一棵或多棵一定有多棵 可能不存在2已知一棵非空二叉树的 ,则能够惟一确定这棵二叉树。先序遍历序列和后序遍历序列先序遍历序列和中序遍历序列先序遍历序列中序遍历序列 ,3使用指针实现二叉树时,如果结点的个数为 n,则非空的指针域个数为 。n-1 2n-1 n+1 2n+1 4设队列存储于一个一维数组中,数组下标范围是 1-n,头尾指针分别为

21、 f 和 r,f 指向第一个元素的前一个位置,r 指向队列中的最后一个元素,则队列中元素个数为 。 r-f r-f+1 (r-f+1)mod n (r-f+n)mod n 5任意一个 AOE 网络的关键路径 。一定有多条 只有一条 可能不只一条 可能不存在 6下列排序算法中,在每一趟都能选出一个元素放到其最终位置上的是 。插入排序 希尔排序 快速排序 堆排序7任意一个有向图的拓扑排序序列 。一定有多种 只有一种 可能不存在 以上都不对二、(7 分) 已知散列表地址空间为 0-8,哈希函数为 H(k)=kmod7,采用线性探测再散列 法 解 决 冲 突 。 将 下 面 关 键 字 数 据 依 次

22、 填 入 该 散 列 表 中 , 同 时 将 查 找 每 个 关 键 字 所 需 的 比 较 次 数 m 填入下表中,并求等概率下的平均查找长度。关键字值:100,20,21,35,3,78,99,450 1 2 3 4 5 6 7 8Am三、(12 分) 回答下列问题:(1)(3 分 )什么叫基数排序?(2)(3 分 )什么是 AVL 树中的平衡因子,它有什么特点 ?(3)(6 分 )n 个元素的序列k 1,k2,kn满足什么条件才能称之为堆 ?简述对它进行堆排序的 过程。四 、 (10 分 )顺 序 给 出 以 下 关 键 字 : 63、 23、 31、 26、 7、 91、 53、 15

23、、 72、 52、 49、 68, 构造 3 阶 B-树。要求从空树开始,每插入一个关键字,画出一个树形。五、(6 分) 设有向无环图 G 如下图所示: 试写出图 G 的六种不同的拓扑排序序列。六、(10 分) 设二叉树以二叉链表表示,各结点的结构如下所示:left data subsum right其中 left、right 分别为指向该结点左、右孩子的指针, data 为存储关键字值的整数域, subsum 中存储以该结点为根的子树中所有关键字值之和。试使用 C 或 C+语言设计算法, 计算所给树 T 中所有结点的 subsum 值。七 、 (12 分)给出一个带表头的单链表 L, L 的

24、每个结点中存放一个整数。现给定一个阈 值 K,将 L 分成两个子表 L1 和 L2,其中 L1 中存放 L 中所有关键字值大于等于是的结点, L2 中存放 L 中所有关键字值小于 K 的结点。试编程实现这个过程。要求,使用 C 或 C+ 语言实现算法,L1 和 L2 仍占用 L 的存储空间。八、(10 分) 设有一维整数数组 A,试使用 C 或 C+语言设计算法,将 A 中所有的奇数 排在所有偶数之前。要求,时间复杂度尽可能地少,结果仍放在 A 原来的存储空间。九、(12 分) 简述哈夫曼编码的构造过程。华东理工大学 2001 年数据结构与程序设计试题一、单选题(10 分) 1 若 某线 性表

25、 中最 常 用的操 作是 在最 后一 个元 素之后 插入 一个 元素 和删 除第一 个元 素,则采用存储方式最节省运算时间。 A单链表 B 仅 有 头 指 针 的 单 循 环 链 表 C双链表 D 仅 有 尾 指 针 的 单 循 环 链 表2若在线性表中采用折半查找法查找元素,该线性表应该 。100 20 21 35 3 78 99 45A元素按值有序 B 采 用 顺 序 存 储 结 构 C元素按值有序,且采用顺序存储结构 D元素按值有序,且采用链式存储结构3对于给定的结点序列 abcdef,规定进栈只能从序列的左端开始。通过栈的操作,能 得到的序列为 。Aabcfed Bcabfed Cab

26、cfde Dcbafde 4已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为 ABC*+DE/-,其前缀形式为 。A-A+B*C/DE B-A+B*CD/E C-+*ABC/DE D -+A*BC/DE5如果 n1 和 n2 是二叉树 T 中两个不同结点,n2 为 n1 的后代,那么按遍历二叉树 T时,结点 n2 一定比结点 n1 先被访问。A前序 B中序 C后序 D层次序 6具有 65 个结点的完全二叉树其深度为 。( 根的层次号为 1) A8 B 7 C6 D57已知二叉树的前序遍历序列是 abdgcefh,中序遍历序列是 dgbaechf,它的后序遍历 序列是 。Abdgce

27、fha B. gdbecfha Cbdgechfa Dgdbehfca 8对于前序遍历和后序遍历结果相同的二叉树为 。 A一般二叉树B只有根结点的二叉树 C根结点无左孩子的二叉树 D根结点无右孩子的二叉树9对于前序遍历与中序遍历结果相同的二叉树为 。 A根结点无左孩子的二叉树 B根结点无右孩子的二叉树 C所有结点只有左子树的二叉树 D所有结点只有右子树的二叉树10在有 n 个叶子的哈夫曼树中,其结点总数为 。 A不确定 B2n C 2n+1 D2n-1 二、是非题(10 分) 1顺序存储方式只能用于存储线性结构。2消除递归不一定需要使用栈。3将一棵树转换成相应的二叉树后,根结点没有右子树。4完

28、全二叉树可以采用顺序存储结构实现,存储非完全二叉树则不能。5在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点之后。6邻接表法只能用于有向图的存储,而邻接矩阵法对于有向图和无向图的存储都适用。7在一个有向图的邻接表中,如果某个顶点的链表为空,则该顶点的度一定为零。8二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值,小于 其右孩子的值。9最佳二叉排序树的任何子树都是最佳二叉排序树。10 对 两 棵 具 有 相 同 关 键 字 集 合 的 而 形 状 不 同 的 二 叉 排 序 树 , 按 中 序 遍 历 它 们 得 到 的 序 列的顺序是一样的。三、问答题(应

29、届生限做 2,3,4,5 题;在职生任选做四题;共 40 分) 1(10 分) 什么是广义表? 请简述广义表与线性表的主要区别。2(10 分) 下图表示一个地区的通讯网,边表示城市间的通讯线路,边上的权表示架设 线路花费的代价。请分别给出该图的邻接表和邻接矩阵,要求每种存储结构能够表达出该图的全部信 息,并分别对这二种形式中每个部分的含义(物理意义) 予以简要说明。若假设每个域(包括指针域 )的长度为一个字节,请分别计算出这二种结构所占用的空 间大小。3(10 分) 已知如下所示长度为 12 的表:(Jan,Feb,Mar,Apr,May,June ,July ,Aug ,Sep,Oct,No

30、v,Dec) 试按 表中 元素 的顺 序依次 插入 一棵 初始 为空 的二叉 排序 树 , 请 画出 插入 完成之 后的 二 叉排序树,并求其在等概率的情况下查找成功的平均查找长度。 若对 表中 元素 先进 行排序 构成 有序 表 , 求 在等 概率的 情况 下对 此有 序表 进行折 半查 找 时查找成功的平均查找长度。 按表 中元 素顺 序构 造一棵 平衡 二叉 排序 树 , 并 求其在 等概 率的 情况 下查 找成功 的平 均 查找长度。4(10 分) 在起泡排序过程中,有的关键字在某趟排序中可能朝着与最终排序相反的方 向移动,试举例说明之。快速排序过程中有没有这种现象?5(10 分) 调

31、用下列函数 f(n),回答下列问题:试指出 f(n)值的大小,并写出 f(n)值的推导过程;假定 n=5,试指出 f(5)值的大小和执行 f(5)的输出结果。 C 函 数int f(int n) int i,j,k,sum=0 ; for(j=1;ii-1;j-) for(k=1;kj)。假设分别基于下述策略:1)图的深度优先搜索;2)图的广度优先搜索;4 (10 分) 设二叉排序树中关键字由 1 至 1000 的 整 数 构 成 , 现 要 检 索 关 键 字 为 531 的 结 点 , 下 述 关 键 字 序 列 中 哪 些 可 能 是 二 叉 排 序 树 上 搜 索 到 的 序 列 ,

32、哪 些 不 可 能 是 二 叉 排 序 树 上 搜索到的序列,哪些不可能是二叉排序树上搜索到的序列?a)800, 399,588,570,500,520,566,531 b)730,355,780,390,701 ,401,530,531 c)732, 321,712,385,713,392,531 d)8,578,555,340,433, 551,550,450,531通 过 对 上 述 序 列 的 分 析 , 试 写 一 个 算 法 判 定 给 定 的 关 键 字 序 列 (假 定 关 键 字 互 不 相 同 )是 否 可 能 是 二 叉 排 序 树 的 搜 索 序 列 。 若 可 能 则

33、 返 回 真 , 否 则 返 回 假 。 可 假 定 被 判 定 的 序 列 已 存 入数组中。5(10 分) 编写一个在非空的带表头结点的单链表上实现就地排序的程序。(不额外申请 新的链表空间)华中理工大学 2001 年数据结构试题说 明 : 在 有 数 据 类 型 定 义 和 算 法 设 计 的 各 题 中 , 任 取 C 语 言 、 PASCAL 语言之一作答, 但不许 使 用 所谓 “类 C”或“ 类 PASCAL”。一、选择题(从下列各题四个备选答案中选出一至四个正确答案,将其代号(A ,B ,C,D)写在题干前面的括号内。答案选错或未选全者,该题不得分。每小题 1 分,共计 20

34、分) ( )1一个算法具有 等特点。A可行性 B 至 少 有 一 个 输 入 量 C确定性 D健壮性( )2. 是一个线性表。A(A, B,C,D) B A, B, C, DC(1,2,3,) D(40,-22 ,88)( )3可使用 作压缩稀疏矩阵的存储结构。A邻接矩阵 B 三 元 组 表 C邻接表 D十字链表( )4采用一维数组表示顺序存储结构时,可用它来表示 。 A字符串 B2 度树 C二叉树 D无向图( )5假设进入栈的元素序列为 d,c,a,b,e ,那么可得到出栈的元素序列 。 Aa ,b,c ,d,e Ba,b,e,d,cCd,b,a, e,c D d, b, a, c, e (

35、 )6对队列的操作有 。A在队首插入元素 B 删 除 值 最 小 的 元 素 C按元素的大小排序 D 判 断 是 否 还 有 元 素( )7 假设 有 60 行 70 列的 二维 数组 a1 60,1 70 ,以 列序 为主 序顺序 存储 , 其基地址为 10000,每个元素占 2 个存储单元,那么第 32 行第 58 列的元素 a32,58的存储地址为 。(无第 0 行第 0 列元素) A16902 B16904C14454 D答案 A,B ,C 均不对( )8. 是 C 语言中“abcd321ABCD“ 的子串。Aabed B32lAB C”abeABC” D”2lAB” ( )9在下列各

36、广义表中,长度为 3 的广义表有 。A(a, b,c,() B(g),(a,b,c,d,f),()C(a,(b ,(c) D()( )10一个堆(heap)又是一棵 。 A二叉排序树 B完全二叉树 C平衡二叉树 D 哈 夫 曼 (Huffman)树( )11 折 半 查 找 有 序 表 (4, 6, 10, 20, 30, 50, 70, 88, 100), 若 查 找 元 素 58, 则 它将依次与表中元素 比较大小,查找结果是失败。A20,70,30,50 B30,88,70 C20,50 D 30, 88, 50, 70( )12对 27 个记录的有序表作折半查找,当查找失败时,至少需要

37、比较 次 关 键字。A3 B4 C5 D6( )13具有 12 个结点的完全二叉树有 。 A5 个叶子 B5 个度为 2 的结点 C7 个分支结点 D2 个度为 1 的结点( )14具有 n(n0)个结点的完全二叉树的深度为 。 Alog 2(n) Blog 2(n+1)Clog 2(n)+1 Dlog e(n) +1( )15 用 5 个 权 值 3, 2, 4, 5, 1构 造 的 哈 夫 曼 (Huffman)树 的 带 权 路 径 长 度 是 。A32 B33 C34 D15( )16对 14 个记录的表进行 2 路归并排序,共需移动 次记录。A42 B56 C91 D84( )17对

38、有 n 个记录的表作快速排序,在最坏情况下,算法的时间复杂度是 。AO(n) BO(n 2) CO(nlog 2n) DO(2 n)( )18在最好情况下,下列算法中 排 序 算 法 所 需 比 较 关 键 字 次 数 最 少 。 A冒泡 B归并 C快速 D直接插入( )19置换选择排序的功能是 。 A选出最大的元素 B 产 生 初 始 归 并 段 C产生有序文件 D置换某个记录( )20可在 构造一个散列文件。 A内存 B软盘 C磁带 D硬盘二、试用 2 种不同表示法画出下列二叉树 B1 的存储结构,并评述这 2 种表示法的优、 缺点。( 共 10 分)二题图 B1 三题图 G三、对图 G:

39、1 从顶点 A 出发,求图 G 的一棵深度优先生成树;2 从顶点 B 出发,求图 G 的一棵广度优先生成树;3求图 G 的一棵最小生成树。 (共 12 分) 四、设哈希(Hash)函数为:H(k)=kMODl4 ,其中 k 为关键字(整数) ,MOD 为取模运算,用 线 性 探 测 再 散 列 法 处 理 冲 突 , 在 地 址 范 围 为 014 散 列 区 中 , 试 用 关 键 字 序 列 (19, 27, 26,28,29,40,64,21,15,12)造一个哈希表,回答下列问题:1画出该哈希表的存储结构图;2若查找关键字 40,必须依次与表中哪些关键字比较大小?3假定每个关键字的查找

40、概率相同,试求查找成功时的平均查找长度。(共 13 分) 五、给定头指针为 ha 的单链表 A,和头指针为 hb 的递增有序单链表 B。试利用表 A和表 B 的 结 点 , 将 表 A 和表 B 归并为递增有序表 C, 其 头 指 针 为 hc, 允 许 有 相 同 data 值( 数 据元素)的结点存在,表 A,B ,C 均带表头结点。例如,给定:将它们归并为:1 在 下 列 C 算法 merge 中有下划线的位置填空,使之成为完整的算法,要求在填空后 加注释,以提高算法的可读性。2 假 定 单 链 表 A 和 B 的长度分别为 m 和 n(m0, n0), 试 分 别 就 最 好 情 况

41、、 最 坏 情 况 和平均性能,分析算法 merge 的时间复杂度。( 共 15 分)结点类型定义如下:struct node 、 int data;struct node *next; 算法如下:Void merge(struct node*ha,struct node *hb,struct node*hc) struct node *pc,*qc ,*pa ,*fa; int search;hc=hb; hb=NULL; pa=ha-next; free(ha); while(pa)pc=hc; qc=hc-next; search= ; while(qc&search)if(pa-dat

42、adata);else pc=qc;qc= ;fa= ; pa= ; fa-next= ;六、设下图二叉树 B2 的存储结构为二叉链表, root 为根指针,结点结构为:(1child,data,rchild)其中:lchild,rchild 分别为指向左右孩子的指针,data 为字符型。(共 10 分) 1 对下列二叉树 B2,执行下列算法 traversel(root),试指出其输出结果; 2假定二叉树 B2 共有 n 个结点,试分析算法 traversal 的时间复杂度。结点类型定义如下:struct node chardata;struct node *lchild,*rchild;

43、算法如下:void traversal(struct node *root) if(root) prinft(“%c”, root-data); traversal(root-lchild); prinft(”%c”,root-data); traversal(root-rchild);二叉树 B2七、算法设计题(要求:(1) 写出所用数据结构的类型定义和变量说明;(2)写出算法,并 在相关位置加注释,以提高算法的可读性。)1 试 设 计 一 算 法 : 输 入 一 个 有 m 行 n 列 的 整 数 矩 阵 , 然 后 将 每 一 行 的 元 素 按 非 减 次 序 输出。例如,若输入:4,

44、3,5,6,29,8,1,2,87,1,2,3,8则输出如下结果:2,3,4,5,61,2,8,8,91,2,3,7,82 如 果 字 符 串 的 一 个 子 串 (其 长 度 大 于 1)的 各 个 字 符 均 相 同 , 则 称 之 为 等 值 子 串 。 试 设 计一算 法 : 输 入字 符串 S, 以 !为结 束标 志, 如果 串 S 中不 存在 等值 子串 , 则输出 信息 : ” 无等值 子 串 ”, 否则 求出( 输出) 一 个长 度最 大的 等值 子串。例 如, 若 S=”abcl23abcl23! ”,则 输出: ”无 等 值子串 ”;又 如, 若 S=”abcaabcccd

45、ddddaaadd!”, 则输 出等 值子串 : ”ddddd”。( 共 20 分)北京理工大学 2001 年程序设计(含数据结构)试题 第二部分 数据结构(共 50 分)一、选择题(12 分,每题 2 分 ) 1下列数据中哪些是非线性数据结构 。A栈 B队列 C完全二叉树 D堆 2静态链表中指针表示的是 。A内存地址 B数组下标 C下一元素地址 D 左 、 右 孩 子 地 址3 用 不 带 头 结 点 的 单 链 表 存 储 队 列 时 , 其 队 头 指 针 指 向 队 头 结 点 , 其 队 尾 指 针 指 向 队 尾结点,则在进行删除操作时 。A仅修改队头指针 B仅修改队尾指针 C队头

46、,队尾指针都要修改 D队头,队尾指针都可能要修改4在下列排序算法中,哪一个算法的时间复杂度与初始排列无关 。 A直接插入排序 B起泡排序C快速排序 D直接选择排序5二叉树第 i 层结点的结点个数最多是(设根的层数为 1) 。 A2 i-1 B2 i-1 C2i D2i-1 6树的后根遍历序列等同于该树对应的二叉树的 。 A先序序列 B中序序列 C后序序列二、填空(8 分,每空 1 分) 1数据结构中评价算法的两个重要指标是。2顺序存储结构是通过 表示元素之间的关系的。链式存储结构是通过 表示元 素之间的关系的。3 AOV 网 中 , 结 点 表 示 , 边 表 示 。 AOE 网 中 , 结

47、点 表 示 , 边 表 示 。4哈夫曼树是 。 三、求解下列问题(25 分,每题 5 分) 1请用 C 语言给出线性链表的类型定义。2已知二叉树的先序序列:CBHEGAF,中序序列:HBGEACF,试构造该二叉树。3 设 散 列 表 的 地 址 空 间 为 0 到 12 的 存 储 单 元 , 散 列 函 数 为 : h(key)=key mod 13, 用 链 地址法解决冲突,初始时散列表为空。现依次将关键字 25,33,48,25,43,38,39 插 入 散 列 表 , 试 画 出 完 成 上 述 所 有 插 入 操 作 后 散 列 表 的 状 态 , 并 计 算 在 等 概 率 的 情

48、 况 下 , 在 该 表 中查找成功的平均查找长度。4给出如下图所示的图形。1)试写出该图的邻接表;2)试写出该图从结点 0 出发的深度优先遍历序列和广度优先遍历序列,并画出遍历过 程中所经的路径。5全国统考答题对 上 图 , 按 迪 杰 斯 特 拉 算 法 求 出 从 结 点 0 到 其 余 各 点 的 最 短 路 径 , 并 给 出 在 求 解 过 程 中 数组 distance 的变化状态。6单独考试答题(可在 5 或 6 中任选一题做)给出关键字序列 27,18,21,77,26,45,66,34 试写出快速排序的过程。 四、算法题(12 分)( 请在算法的主要步骤上加注释 )1 下 面 是 用 C 语 言 编 写 的 对 不 带 头 结 点 的 单 链 表 进 行 就 地 置 逆 的 算 法 , 该 算 法 用 L 返 回置逆后链表的头指针。试在空缺处填入适当的语句。void reverse(1inklist&L) p=NULL;q=L ; while(q!=NULL)q-next=p; p=q; 2全国统考答题 设二叉树用二叉链表存储,试编写按层输出二

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报