收藏 分享(赏)

必看!!!!!数据结构期末复习题及部分答案解析.doc

上传人:精品资料 文档编号:8546574 上传时间:2019-07-02 格式:DOC 页数:14 大小:136.58KB
下载 相关 举报
必看!!!!!数据结构期末复习题及部分答案解析.doc_第1页
第1页 / 共14页
必看!!!!!数据结构期末复习题及部分答案解析.doc_第2页
第2页 / 共14页
必看!!!!!数据结构期末复习题及部分答案解析.doc_第3页
第3页 / 共14页
必看!!!!!数据结构期末复习题及部分答案解析.doc_第4页
第4页 / 共14页
必看!!!!!数据结构期末复习题及部分答案解析.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、0 一是非题1. 数据结构(应该是抽象数据类型) 可用三元式表示(D , S,P) 。其中:D 是数据对象,S是 D 上的关系,P 是对D 的基本操作集。(f)2 简单地说,数据结构是带有结构的数据元素的集合。(t)3 判断带头结点的非空循环单链表(头指针为 L)中指针 p 所指结点是最后一个元素结点的条件是:p-next=L。 (t)4 线性表的链式存储结构具有可直接存取?表中任一元素的优点。(f) 5 线性表的顺序存储结构优于链式存储结构。(f)6. 在单链表 P 指针所指结点之后插入 S 结点的操作是:P-next= S ; S- next = P-next;。( 顺序弄反了)(f)7

2、对于插入、删除而言,线性表的链式存储优于顺序存储。(t)8. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。(f)9. 栈和队列是操作上受限制的线性表。(t)10. 队列是与线性表完全不同的一种数据结构。栈和队列是操作上受限制的线性表(f)11. 队列是一种操作受限的线性表,凡对数据元素的操作仅限一端进行。对列不是(f)12. 栈和队列也是线性表。如果需要,可对它们中的任一元素进行操作。(f)13. 栈是限定仅在表头进行插入和表尾进行删除运算的线性表。(f)14. 二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所 以,二叉树是树的 特殊情形。(f)15 二叉树是一棵结点的度

3、最大为二的树二叉树和树相互独立。(f) 16 赫夫曼树中结点个数一定是奇数。(t)17 在二叉树的中序遍历序列中,任意一个结点均处在其左孩子结点的后面。(t)18 假设 B 是一棵树,B是对应的二叉树。则 B 的后根遍历相当于 B的后序遍历 后根遍历相当于中序遍历。(f)19. 通常,二叉树的第 i 层上有 2i-1 个结点。应该为 12i-1 个(f)20. 中序线索二叉树的优点是便于在中序下查找直接前驱结点和直接后继结点。(t)21 二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。(t)22 由树结点的先根序列和后根序列可以唯一地确定一棵树。 (t)23 邻接多重表可以用以表示

4、无向图,也可用以表示有向图。只能表示无向图,有向图用十字链表(f)24 可从任意有向图中得到关于所有顶点的拓扑次序带环图没有。(f)25 有向图的十字链表是将邻接表和逆邻接表合二为一的链表表示形式。(t)26 关键路径是 AOE 网中源点到汇点的最短路径。 (f)27 连通图 G 的生成树是一个包含 G 的所有 n 个顶点和 n-1 条边的子图。(f)28 一个无向图的连通分量是其极大的连通子图。(t)29 十字链表可以表示无向图,也可用以表示有向图。(f)30 邻接表可以表示有向图,也可以表示无向图。 ( t )31. 二叉排序树的平均查找长度为 O(log) 。(t)32. 二叉排序树的最

5、大查找长度与(LOG 2N)同阶。(f)33 选用好的 HASH 函数可避免冲突。哈希函数有几种处理冲突的方法(f)34 折半查找不适用于有序链表的查找。(t)35. 对于目前所知的排序方法,快速排序具有最好的平均性能。(t)36 对于任何待排序序列来说,快速排序均快于冒泡排序。(f)37 在最坏情况下,堆排序的时间性能是 O(nlogn),比快速排序好 (t)38 快速排序具有最好的平均时间性能,它在任何时候的时间复杂度都是 O(n log n) 。(f)39. 字符串是数据对象特定的线性表。(t)40. 空串与空格串是相同的。(f)41. 对于一棵 m 阶的 B-树.树中每个结点至多有 m

6、 个关键字.除根之外的所有非终端结点至少有m/2个关键字。(f)42. 当二叉排序树是一棵平衡二叉树时,其平均查找长度为 O(log2n)。(t)43. 广义表的表头和表尾都是广义表。(f)44 二维数组是其数据元素为线性表的线性表。(t)选择题。1 从逻辑上可以把数据结构分成( c )。A. 动态结构和静态结构 B. 顺序组织和链接组织C. 线性结构和非线性结构 D. 基本类型和组合类型2 线性表 L 在( b )情况下适于使用链表结构实现。A. 不需修改 L 的结构 B. 需不断对 L 进行删除、插入C. 需经常修改 L 中结点值 D. L 中含有大量结点3 带头结点的单链表 L 为空的判

7、断条件是 b 。带头结点的循环链表 L 为空的判断条件是 c 。A. L=null B. L-next=null C. L-next=L D. L!=null4 若顺序表中各结点的查找概率不等,则可用如下策略提高顺序查找的效率:若找到指定的结点,将该结点与其后继(若存在)结点交换位置,使得经常被查找的结点逐渐移至表尾。以下为据此策略编写的算法,请选择适当的内容,完成此功能。顺序表的存储结构为:typedef structElemType *elem; /数据元素存储空间,0 号单元作监视哨int length; /表长度SSTable;int search_seq(SSTable ST,Key

8、Type key) /在顺序表 ST 中顺序查找关键字等于 key 的数据元素。/若找到,则将该元素与其后继交换位置,并返回其在表中的位置,否则为 0。ST.elem0.key=key;i=ST.length;while(ST.elemi.key!=key) f ;if( G )ST.elemiST.elemi+1;e ;return i;A. i0 B. i=0 C. inext 非空,此时若要删除指针 p 所指的结点,可以通过如下方法进行:将 p 所指结点的后继的元素值复制到该结点,然后删除其后继结点。相应的语句序列为:p-data = p-next-data; p-next = p-ne

9、xt-next; free(p -next)换指针的同时还要交换数据3 线性表的顺序存储结构是以 数组下标 来表示数据元素之间的逻辑关系的。4 已知 P 是单链表中某一结点的指针,P 既不是首元结点也不是尾元结点,Q 是 P 的 前驱结点指针。当删除 P 结点时,链表的链接可用语句( q-netx = p-next )实现。5 已知某树的先根遍历次序为 abcdefg 后根遍历次序为 cdebgfa。若将该树转换为二叉树,其后序遍历次序为( ) 。层次遍历次序为( ) 。6 已知某二叉树的先序遍历次序为 afbcdeg 后序遍历次序为 cedbgfa。其后序遍历次序为( ) 。层次遍历次序为(

10、 ) 。7 在二叉树的第 i 层上至少有 _1_个结点, 至多有_2Error!_个结点 ,深度为 k 的二叉树至多有_2Error!_-1_ _个结点 .8 对树的遍历有先序遍历树和后序遍历树。若以二叉链表作树的存储结构,则树的先序遍历可借用二叉树的 遍历算法来实现,而树的后序遍历可借用二叉树的 中序遍历 遍历算法来实现。9 设高度为 h 的二叉树上只有度为 0 和度为 2 的结点,则此类二叉树中所包含的结点数至少是 2*h - 1 ,至多是 满树 。10 对任何一棵二叉树 T,若其终端结点数为 n0.度为 2 的结点为 n2,则 n0 与 n2 的关系为( n0 = n2 +1 )。11

11、如果对完全二叉树中结点从 1 开始按层进行编号,设最大编号为 n;那么,可以断定编号为 i (i1)的结点的父结点编号为 ( i/2 向下取整 );所有编号( in/2)的结点为叶子结点。 12 n 个顶点的连通图至少有 条边,至多有 n*(n-1)/2 条边,此时即是完全图条边。13 对于图的存储结构有( 数组表示法 ) 、 ( 邻接表法 )( 十字链表法 ) ( 邻接多重表法 )等方法。14 在一个无向图的邻接表中,若表结点的个数是 m,则图中边的条数是_m/2_条。15 若有序表中关键字序列为:12,22,33,44,55,66,77,88,99 对其进行折半查找,则在等概率情况下,查找

12、成功时的平均查找长度是( ) 。查找 99 时需进行( )次比较。16 在哈希表中,处理冲突的方法有开放定址法, 再哈希表法 , 链地址法 等。17 在二叉树的第 i 层上至少有 _个结点, 至多有_个结点 ,深度为 k 的二叉树至多有个结点.18 对于一棵高度为 K 的二叉排序树,结点数最少可有 个,最多可有 个。19 用 中序遍历 遍历对二叉排序树进行访问可得到有序序列。20 已知 Hash 函数为 H(K)=K mod 13 ,散列地址为 0 -14,用二次探测再散列处理冲突,关键字(23,34,56,24,75,12,49, 52,36,92)的分布如图,则平均成功的查找长度为( )

13、、平均失败的查找长度为( ) 。0 1 2 3 4 5 6 7 8 9 10 11 12 13 1452 36 92 56 34 23 24 75 12 4921 一 棵 阶 的 -树 , 第 一 层 至 少 有 一 个 结 点 ; 第 二 层 至 少 有 2 个 结 点 ,除 根 之 外 的 所 有 非 终 端 结 点 至 少 有 ( ) 棵 子 树 ,树中每个结点至多有( )棵子树。22 在哈希表中,处理冲突的方法有开放定址法, , ,。23 哈希表的查找效率取决于( 哈希函数是否均匀; 处理冲突的方法; 哈希表的装填因子 ) 。24 高 度 为 4 (包 含 不 带 关 键 字 的 叶

14、子 结 点 层 )的 7阶 B树 最 少 有 个 关 键 字 , 最多有 _个 关 键 字 ; 如 果 其 中 的 某 结 点 正 好 有 2 个 儿 子 , 那 么 , 该 结 点 必 定 是结 点 。25 对 n 个元素的序列进行内部排序,若用起泡排序法,最少的比较次数是 n-1 ,最多的比较次数是 n(n-1)/2 。25 (算法填空)Status Preordertraverse(Bitree T,Status(*Visit)(Telemtype e) /先序非递归遍历二叉树。Initstack ( S ); Push ( S,T );While ( !stackempty( S )

15、) While ( gettop( S, p )_push(s,p-lchild)_ ;Pop ( S , p );if ( _(!stackempty(s) _ ) _ pop(S, p); push( S, p-rchild ); return ok;26 (算法填空)下列算法试图完成在数组 A 中搜索有无关键字 key,若有,返回数组下标 ,若无,返回-1 。在“ ”处填上合适的内容,完成该算法。int BinarySearch (keytype A , int low,int high, keytype key )while ( low rj ) +j;if ( rc H.rj ) b

16、reak;H.rs=H.rj; s=j;H.Rs = rc ;/heapadjust图示结构题1 已知在电文中只出现频率为 ( 5,26,7,23,20,19 )的个字符,画出你建的哈夫曼树,并给出其哈夫曼编码。2.已知某二叉树的后序遍历和中序遍历次序分别为 DBFGECA 和 BDACFEG请画出该二叉树,并为之建立先序线索没有左子树,则建立该节点的前驱,若没有右子树,这指向该节点的后继。3 已知某二叉树的先序遍历次序为:a,b,c,d,e,f,g.中序遍历次序为:b,a,d,f,e,g,c画出该二叉树,并在该二叉树上建立中序线索。4 某二叉树的中序遍历次序为 BEGFDAC, 先序遍历次序

17、为 ABDEFGC。试画出该二叉树,并为之建立中序线索(图示之) 。5 已知某二叉树的后序遍历和中序遍历次序分别为 FBEDGCA 和 FBADECG,请构造并画出该二叉树。6 设某一电文只出现 a,b,c,d,e,f,g 7 个字母;出现频率分别为 30%,10%,05%,04%,13%,18% 及 20%,请给出各字母的哈夫曼编码。7 将图示森林转换为二叉树,并对该二叉树先序全序线索化。8 将图示森林转换为二叉树,并对该二叉树中序全序线索化。abdjc ehfg mlki12 35967 89 某二叉树的结点数据采用顺序存储表示如下:0 1 2 3 4 5 6 7 8 9 10 11 12

18、 13 14 15 16 17 18 19A B C D E F G H I(1)试画出此二叉树的图形表示。(2)将此二叉树看作森林的二叉树表示,试将它还原为森林。10 已知某有向图如图所示:1)给出其十字链表存储结构2)给出其深度优先遍历次序。3)给出其广度优先遍历次序。4)给出各强连通分量。 11 设输入序列为 20,45,30,89,70,38,62,19,依次插入到一棵 2-3 树中(初始状态为空),请画出该 B-树。12 右图为一棵 3 阶 B树。 (20,25)1)画出在该树上插入元素 15 后的 B树。 (10,14)(21) (35)2)接着,再删除元素 35,画出删除后的 B

19、树。13 已知 Hash 函数为 H(K)=K mod 13 ,散列地址为 0 -14,用线性探测再散列处理冲突,给出关键字(56,34,68,23,16,70,48,35,83,12,14,57)在散列地址的分布。并指出平均成功的查找长度是多少?0 1 2 3 4 5 6 7 8 9 10 11 12 13 1414 根据插入次序(20,30,70,60,10,100,110,90,80。 )建立平衡的二叉排序树。15 设哈希表长为 16,哈希函数为 H(key)=key mod 13,用开放定址法的二次探测再散列处理冲突(d i=12,-1 2,2 2,-2 2,3 2,-3 2) 。依次

20、存入 12 个元素:56,82,17,24,36,21,83,96,13,34,57,50。请画出它们在表中的分布情形。16 已知待排序序列为:25,12,9,20,7,31,24,35,17,10,试写出:(1). 堆排序初始建堆(大顶堆 )的结果;(2). 以第一个元素为枢轴的快速排序一趟扫描的结果;(3). 希尔排序第一趟(增量为 5)的结果。算法设计题4bd eca1 设有一个带头结点、元素按值递增有序的单链表,结点的类型定义如下:typedef struct LNode int data;struct LNode *next; LNode, *LinkList;编写算法,删除其中所有

21、值相同的多余元素结点2 某线性表中元素以降序排列,现要插入一个元素 X,插入后该线性元素仍保持降序。线性表采用带头结点单链表方式存贮。 请编写该插入算法。3 编写在一有序顺序表中插入数据元素 X 的算法 INSERT(,) 。4 写一算法,Delete(linklist struct LNode *next; LNode, *Linklist;5 写一算法,Contrary(linklist struct LNode *next; LNode, *Linklist;7 写一算法,将带头结点的有序单链表 A 和 B 合并成一新的有序表 C。(注:不破坏 A 和 B的原有结构.)Merge(Lin

22、klist A, Linklist B, Linklist int j )删除单链表中第 i 个元素, 并将之插入至原表中的第 j 个元素之前.9 写出求单链表长度算法 int length(linklist L)10 若将循环队列 Q 的结构定义为:#define m 100 /最大队列长度typedef struct QElemType *base; / 存储空间基址int rear; /尾指针,若队列不空,指向队尾元素int length; /当前队列的长度,即元素个数 SqQueue;试写出相应初始化、入队列和出队列的三个函数。11 二叉树用二叉链表存储表示。typedef struc

23、t BiTNode TelemType data;Struct BiTNode *lchild, *rchild; BiTNode, *BiTree;试编写销毁二叉树 T 的算法 DestroyBiTree ( BiTree Struct BiTNode *lchild, *rchild; BiTNode, *BiTree;试编写算法,求元素值为 x 的结点的左孩子(返回 x 的左孩子的指针) 。13 设计一算法,计算给定二叉树 T 中度为 2 的结点个数。14 编一算法:按层序遍历二叉树 T。15 试编写先序遍历二叉树 T 的递归算法 PreorderBiTree ( BiTree &T)。16 写出一个将树中每个结点的左右孩子对换的算法 SWAPTREE(T) 即如: 原二叉树 转换后 T SWAPTREE(T) (A) (A) / / (B) (C) (C) (B) / / / (D) (E) (F) (F) (E) (D) / / (G) (H) (H) (G)17 二叉树用二叉链表存储表示。试编写后序遍历二叉树 T 的递归算法 PostorderBiTree ( BiTree T)。18 写一个计算二叉树中叶子结点个数的递归算法。

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

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

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


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

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

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