收藏 分享(赏)

华工数据结构卷.doc

上传人:cjc2202537 文档编号:6213460 上传时间:2019-04-02 格式:DOC 页数:11 大小:141.45KB
下载 相关 举报
华工数据结构卷.doc_第1页
第1页 / 共11页
华工数据结构卷.doc_第2页
第2页 / 共11页
华工数据结构卷.doc_第3页
第3页 / 共11页
华工数据结构卷.doc_第4页
第4页 / 共11页
华工数据结构卷.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、一. 选择题 1. 向一个有 127 个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( )个元素。A8 B. 63.5 C. 63 D. 72. 设有一个二维数组 Amn,假设 A00存放位置在 644(10) ,A22存放位置在 676(10) ,每个元素占一个空间,则 A33在( )位置, (10)表明用 10 进数表示。!P113A692(10) B. 626(10) C. 709(10) D. 724(10)3. 一个有序顺序表有 255 个对象,采用顺序搜索查表,平均搜索长度为( ) 。?A128 B. 127 C. 126 D. 2554. 含 5 个结点(元素值均不

2、相同)的二叉树搜索树有( )种。A54 B. 42 C. 36 D. 655N 个顶点的连通图至少有( )条边。AN1 B. N C. N1 D. 06 对于两个函数,若函数名相同,但只是( )不同则不是重载函数。A参数类型 B. 参数个数 C. 函数类型 D.函数个数 7 若需要利用形参直接访问实参,则应把形参变量表明为( )参数。A指针 B.引用 C. 值 D.地址8 下面程序的时间复杂度为( ) 。!for(int i=0; ilink=p-link; p-link =s; B. q-link=s; s-link =p;C. p-link=s-link; s-link =q; D. p-

3、link=s; s-link =q;11. 设单链表中结点的结构为(data, link)。若想摘除结点*p 的直接后继,则应执行下列哪一个操作( ) 。!Ap-link=p-link-link; B. p=p-link; p-link=p-link-linkC. p-link=p-link; D. p=p-link-link;12. 栈的插入和删除操作在( )进行。!A栈顶 B. 栈底 C. 任意位置 D. 指定位置13若让元素 1,2,3 依次进栈,则出栈次序不可能出现哪种情况( ) 。!A3,2,1 B. 2,1,3 C. 3,1,2 D. 1,3,2#14 广义表 A(a),则表尾为(

4、 ) 。Aa B. () C. 空表 D. (a )#15 下列广义表是线性表的有( ) 。AE(a,(b,c) B. E(a,E) C. E(a,b) D. E(a,L()16. 折半搜索与二叉搜索树(即二叉排序树)的时间性能( ) 。A相同 B. 完全不同 C. 有时不相同 D. 不确定17 采用折半搜索算法搜索长度为 n 的有序表时,元素的平均搜索长度为( ) 。!AO(nlog2n) B. O(n) C. O(log2n) D. O(n)18. 采用邻接表存储的图的深度优先遍历算法类似于二叉树的( ) 。!A中序遍历 B. 前序遍历 C. 后序遍历 D. 按层次遍历19 每次从无序表中

5、挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做( )排序。!A插入 B. 选择 C. 交换 D. 外排序20采用邻接表存储的图的广度优先遍历算法类似于二叉树的( ) 。A中序遍历 B. 前序遍历 C. 后序遍历 D. 按层次遍历二. 填空题 1.算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应具有输入、输出、_确定性_、有穷性和可执行性等特性。!2.在一棵度为 3 的树中,度为 2 的结点个数是 1,度为 0 的结点个数是 6,则度为 3 的结点个数是_2_。!3.队列的插入操作在_队尾_进行,删除操作在_队头_进行。4.当用长度为 n 的数组顺序存储一

6、个栈时,若用 top=n 表示栈空,则表示栈满的条件为_top=0_。 !5.对序列(49,38,65,97,76,27,13,50)采用快速排序法进行排序,以序列的第一个元素为基准元素得到的划分结果是_13 27 384550 65 76 97_。!6. 对于一棵具有 n 个结点的树,该树中所有结点的度数之和为 _n-1_。7.在一个堆的顺序存储中,若一个结点的下标为 i,则它的左子女结点的下标为_2i+1_,右子女结点的下标为 _2i+2_。8. 请指出在顺序表2、5、7、10、14、15、18 、23、35、41、52 中,用折半查找关键码 12 需做_4_次关键码比较。 !9.若线性表

7、采用顺序存储结构,每个元素占用 4 个存储单元,第一个元素的存储地址为 100,则第 12 个元素的存储地址是_144_。10. 在一个长度为 n 的顺序表中,向第 i 个元素(1 i n)之前插入一个新元素时,需要向后移动_n-i+1_ _个元素。?11.设有两个串 p 和 q,求 q 在 p 中首次出现的位置的运算称作_求子串_。12.以折半搜索方法搜索一个线性表时,此线性表必须是_顺序_存储的_有序_表。13.在一个无向图中,所有顶点的度数之和等于所有边数的 _2_倍。14.判定一个循环队列 QU(最多元素为 m)为满队列的条件是 _QU-front = = (QU-rear+1)% m

8、_。_。#15设有广义表【不要求广义表】D(a,b,D),其长度为_3_,深度为_。16 在一个具有 n 个顶点的无向完全图中,要连通所有顶点则至少需要 _n-1_条边,在一个具有 n 个顶点的有向完全图中,包含有_n(n-1)_条边。17. 对于一个具有 n 个顶点的图,若采用邻接矩阵表示 ,则矩阵大小为_n*n_。18. 对于一个具有 n 个顶点和 e 条边的连通图,其生成树中顶点数和边数分别为_n_和_n-1_。 19. 在直接选择排序中,记录比较次数的时间复杂度为_O(n*n)_,记录移动次数的时间复杂度为_O(n)_。20 快速排序在平均情况下的空间复杂度为_ O(logn)_,在最

9、坏情况下的空间复杂度为_O(n)_。 21.当问题的规模 n 趋向无穷大时,算法执行时间 T(n)的数量级被称为算法的_时间复杂度_。 25.在一个无向图的邻接表中,若表结点的个数是 m,则图中边的条数是_m/2_条。 26. 对于一个具有 n 个顶点的图,若采用邻接矩阵表示 ,则矩阵大小为_n 的平方_。 三、判断题 (y )1. 直接选择排序是一种不稳定的排序方法。( n)2. 折半搜索只适用于有序表,包括有序的顺序表和有序的链表。( y)3. 数据的逻辑结构与数据元素本身的内容和形式无关。 ( n)4. 数据结构是指相互之间存在一种或多种关系的数据元素的全体。( n)5.线性表的逻辑顺序

10、与物理顺序总是一致的。( y)6.线性表若采用链式存储表示时所有存储单元的地址可连续可不连续。( y)7.二叉树是数的特殊情形。( y)8.若有一个叶子结点是二叉树中某个子树的中序遍历结果序列的最后一个结点,则它一定是该子树的前序遍历结果序列的最后一个结点。( n)9. 若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。( n)10.任一棵二叉搜索树的平均搜索时间都小于用顺序搜索法搜索同样结点的顺序表的平均搜索时间。 ( n)11.对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。( y)

11、12. 最优二叉搜索树的任何子树都是最优二叉搜索树。(y )13. 在二叉搜索树上插入新结点时,不必移动其它结点,仅需改动某个结点的指针,使它由空变为非空即可。(y )14. 有 n(n1)个顶点的有向强连通图最少有 n 条边。( n)15. 连通分量是无向图中的极小连通子图。 ( n)16.二叉树中任何一个结点的度都是 2。(n )17.单链表从任何一个结点出发,都能访问到所有结点。 四、程序阅读填空 1. 在顺序表中第 i 个位置插入新元素 x !template int SeqList:Insert (Type /插入不成功else last+;for(int j=last;ji;j-)

12、dataj=dataj-1;datai = x;return 1; /插入成功 2. 删去链表中除表头结点外的所有其他结点template void List : MakeEmpty ( ) ListNode *q;while (firstlink!=NULL)q=first link;first link=q link;/将表头结点后第一个结点从链中摘下delete q; /释放它 last = first; /修改表尾指针3. 删去链式队头结点(队头指针为 QueueNode *front) ,并返回队头元素的值template Type Queue:DeQueue( )assert (!

13、IsEmpty ( ); /判队空的断言QueueNode *p =_front_;Type retvalue = pdata; /保存队头的值_front=front link_; /新队头delete p;return retvalue;#4. 最小堆的向下调整算法(没有)template void MinHeap:FilterDown(int start, int EndOfHeap)int i = start, j = 2*i+1; / j 是 i 的左子女Type temp = heapi;while ( j heapj+1.key ) j+; /两子女中选小者if ( temp.k

14、ey int orderedList :BinarySearch(const Type if ( low x )mid = BinarySearch ( x, low, mid -1 ); return mid;6. 直接插入排序的算法(按关键码 Key 非递减顺序对数据表 list 进行排序)(无)template void InsertionSort(datalist i viod Insert(datalist int j = i; /从后向前顺序比较 while(j0 i viod SelectExchange(datalist for(int j=i+1;jrLink, *q=DL-

15、lLink;While(p!=q _q=q lLink_;else sym=0;return sym; 五、简答题 1. 给定权值集合15, 03, 14, 02, 06, 09, 16, 17, 构造相应的霍夫曼树, 并计算它的带权外部路径长度。 !15 03 14 02 06 09 16 17F:02 0315 14 06 09 16 17 0502 0315 140609 16 170511()()() 15 140916 171120此树的带权路径长度 WPL = 229。2. 线性表可用顺序表或是链表存储,此两种存储表示各有哪些特点,优缺点?!P503. 设有一个输入数据的序列是46

16、,25,78, 62, 12, 37, 70, 29,试画出从空树起,逐个输入各个数据而生成的二叉搜索树。按顺序逐个输入46/ 25 7802 0305 06()02 0314 150916 1705110620 2902 0314 1509 16 1705110620 29 33()15 03 14 02 06 09 16 17F:02 0315 14 06 09 16 17 0502 0315 140609 16 170511()()()02 0315 140916 1705110620()02 0314 150916 1705110620 2902 0314 1509 16 170511

17、0620 29 33()02 0314 150905110620 2916 1733 49()02 03150905110620 2916 1733 491482()/ /12 37 62/ 29 704. 对于如右图所示的有向图,试写出:!(1) 从顶点 出发进行深度优先搜索所得到的深度优先生成树;(2) 从顶点 出发进行广度优先搜索所得到的广度优先生成树; P178#5.用广义表的带表头结点的存储表示法表示下列集合。A = ( )B = (6, 2)C = (a,( 5, 3, x)D = (B, C, A)E = (B, D) 6.右图所示为一有向图,请给出该图的下述要求: (1)给出每

18、个顶点的入度和出度;1 3 02 2 23 1 24 3 15 2 16 1 4(2)以结点 3 为起始结点,分别画出该图的一个深度优先生成树和一个宽度优先生成树; (3)给出该图的邻接矩阵; (4)给出该图的邻接表; (5)给出该图的逆邻接表; 7. 已知二叉树的先序、中序和后序序列分别如下,但其中有一些已模糊不清,试构造出该二叉树。先序序列 _BC_EF_中序序列 BDE_AG_H后序序列 e_DCb_GHf_A 8. 已某个不带权的无向图采用邻接矩阵存储方法依次将顶点的数据信息存放于一维数组 ABCDEFGH 中,边的信息存放于邻接矩阵中,邻接矩阵为 0 1 1 0 0 0 0 01 0

19、 0 0 1 0 1 11 0 0 1 0 1 0 00 0 1 0 0 1 0 00 1 0 0 0 0 0 10 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0请写出从顶点 A 出发对该图进行深度优先遍历后得到的顶点序列。 六、算法编程 1. 已知 An为整数数组,试写出实现下列运算的递归算法:!(1) 求数组 A 中的最大整数。(2) 求 n 个整数的和。(3) 求 n 个整数的平均值。 int MAX(int array,int max,int index) /求最大的 递归if(indexarray.length) return max;e

20、lse if(arrayindex max)return MAX(array,arrayindex,index+1);elsereturn MAX(array,max,index+1); int SUM(int array,int sum,int index) /求和递归if(indexarray.length) return sum;elsereturn SUM(array,sum+=arrayindex,index+1); float AVE(int array,float sum,int index) /求平均值递归if(indexarray.length) return sum/(index-1);elsereturn AVE(array,sum+=arrayindex,index+1);2. 请给出二叉树及其结点的类定义,并实现一个计算二叉树结点个数的成员函数 (无)

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

当前位置:首页 > 网络科技 > 数据结构与算法

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


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

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

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