中国农业大学_821数据结构_《数据结构》习题(9)

合集下载

中国农业大学_821数据结构_《数据结构》习题(6)

中国农业大学_821数据结构_《数据结构》习题(6)

第6章 二叉树与树一、回答题1. 图6-1所示的树的叶子结点、非中端结点、每个结点的度及树的深度各是多少?图6-1 树2. 已知一棵树边的集合表示为:{ ( L, N ), ( G, K ), ( G, L ), ( G, M ), ( B, E ), ( B, F ), ( D, G ), ( D, H ), ( D, I ), ( D, J ), ( A, B ), ( A, C ), ( A, D ) },画出这棵树,并回答以下问题:(1) 树的根结点是哪个?哪些是叶子结点?哪些是非终端结点? (2) 树的度是多少?各个结点的度是多少? (3) 树的深度是多少?各个结点的层数是多少?(4) 对于结点G ,它的双亲结点、祖先结点、孩子结点、子孙结点、兄弟和堂兄弟分别是哪些结点?3. 如果一棵度为m 的树中,度为1的结点数为n 1,度为2的结点数为n 2,……,度为m 的结点数为n m ,那么该树中含有多少个叶子结点?有多少个非终端结点?ABECDFGHJI4. 任意一棵有n 个结点的二叉树,已知有m 个叶子结点,能否证明度为2结点有m-1个?5. 已知在一棵含有n 个结点的树中,只有度为k 的分支结点和度为0的叶子结点,那么该树含有的叶子结点的数目是多少?6. 一棵含有n 个结点的k 叉树,可能达到的最大深度和最小深度各为多少?7. 对于3个结点A 、B 、C ,可以过程多少种不同形态的二叉树?8. 深度为5的二叉树至多有多少个结点?9. 任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序是发生改变?不发生改变?不能确定?10. 设n 、m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是什么? 11. 已知某二叉树的后续遍历序列是dabec ,中序遍历序列是debac ,那么它的前序遍历序列是什么?12. 对一棵满二叉树,m 个树叶,n 个结点,深度为h ,则n 、m 和h 之间的关系是什么? 13. 对图6-2(a)和(b)所示的二叉树,它们的经过先序、中序和后序遍历后得到的结点序列分别是什么?画出它们的先序线索二叉树和后序线索二叉树。

中国农业大学_821数据结构_《数据结构》模拟题及答案(3套)

中国农业大学_821数据结构_《数据结构》模拟题及答案(3套)

中国农业大学
2011 年攻读硕士学位研究生入学考试模拟试题(一)
科目代码: 821 科目名称: 数据结构
考生注意:所有大题务必书写在考场提供的答题纸上,写在本试题单上的答题一 律无效(本题单不参与阅卷) 。 一、选择题 1. 算法的时间复杂度取决于( ) A.问题的规模 B. 待处理数据的初态 C. A 和 B 2.下面关于线性表的叙述中,错误的是哪一个? A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 )中应用。 3. 栈在( A. 递归调用 B. 子程序调用 C. 表达式求值 D. A,B,C 4.设有两个串 p 和 q,其中 q 是 p 的子串,求 q 在 p 中首次出现的位置的算法 称为( ) A.求子串 B.联接 C.匹配 D.求串长 5. 数组 A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地 址为 1000 的内存单元中,则元素 A[5,5]的地址是( )。 A. 1175 B. 1180 C. 1205 D. 1210 6 在一棵高度为 k 的满二叉树中,结点总数为( ) k-1 k k A.2 B.2 C.2 -1 D.log2k+1 ) 7.哪一种图的邻接矩阵是对称矩阵?( A.有向图 B.无向图 C.AOV 网 D.AOE 网 8.动态存储管理系统中,通常可有( )种不同的分配策略。 A. 1 B. 2 C. 3 D. 4 E. 5 9 如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用 ( )查找法。 A. 分快查找 B. 顺序查找 C. 折半查找 D. 基于属性 10 组记录的关键码为(46,79,56,38,40,84) ,则利用快速排序的方法,以 第一个记录为基准得到的一次划分结果为( ) 。 A.(38,40,46,56,79,84) B. (40,38,46,79,56,84) C.(40,38,46,56,79,84) D. (40,38,46,84,56,79) 二、判断题

《数据结构》第九章习题参考答案

《数据结构》第九章习题参考答案

《数据结构》第九章习题参考答案《数据结构》第九章习题参考答案一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、快速排序是一种稳定的排序方法。

(×)2、在任何情况下,归并排序都比简单插入排序快。

(×)3、当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂度的主要因素。

(√)4、内排序要求数据一定要以顺序方式存储。

(×)5、直接选择排序算法在最好情况下的时间复杂度为O(n)。

( ×)6、快速排序总比简单排序快。

( ×)二、单项选择题1.在已知待排序文件已基本有序的前提下,效率最高的排序方法是(A)。

A.直接插入排序B.直接选择排序C.快速排序D.归并排序2.下列排序方法中,哪一个是稳定的排序方法?(B)A.直接选择排序B.折半插入排序C.希尔排序D.快速排序3、比较次数与排序的初始状态无关的排序方法是( B)。

A.直接插入排序B.起泡排序(时间复杂度O(n2))C.快速排序D.简单选择排序4、对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47 (4)15 21 25 47 84 则采用的排序是( A)。

A. 选择B. 冒泡C. 快速D. 插入5、快速排序方法在(D)情况下最不利于发挥其长处。

A. 要排序的数据量太大B. 要排序的数据中含有多个相同值C. 要排序的数据个数为奇数D. 要排序的数据已基本有序6、用某种排序方法对线性表{25,84,21,47,15,27,68,35,20}进行排序,各趟排序结束时的结果为:(基准)20,21,15,25,84,27,68,35,47(25)15,20,21,25,47,27,68,35,84(左20右47)15,20,21,25,35,27,47,68,84(左35右68)15,20,21,25,27,35,47,68,84 ;则采用的排序方法为(C)。

数据结构第九章查找习题及答案

数据结构第九章查找习题及答案

数据结构第九章查找习题及答案第九章查找⼀、选择题1、若查找每个记录的概率均等,则在具有n个记录的连续顺序⽂件中采⽤顺序查找法查找⼀个记录,其平均查找长度ASL为( )。

A. (n-1)/2 B、 n/2 C、 (n+1)/2 D、 n2、下⾯关于⼆分查找的叙述正确的就是 ( )A、表必须有序,表可以顺序⽅式存储,也可以链表⽅式存储 C、表必须有序,⽽且只能从⼩到⼤排列B、表必须有序且表中数据必须就是整型,实型或字符型 D、表必须有序,且表只能以顺序⽅式存储3、⽤⼆分(对半)查找表的元素的速度⽐⽤顺序法( )A.必然快 B、必然慢 C、相等 D、不能确定4、具有12个关键字的有序表,折半查找的平均查找长度( )A. 3.1 B、 4 C、 2、5 D、 55.当采⽤分块查找时,数据的组织⽅式为 ( )A.数据分成若⼲块,每块内数据有序B.数据分成若⼲块,每块内数据不必有序,但块间必须有序,每块内最⼤(或最⼩)的数据组成索引块C、数据分成若⼲块,每块内数据有序,每块内最⼤(或最⼩)的数据组成索引块D、数据分成若⼲块,每块(除最后⼀块外)中数据个数需相同6、⼆叉查找树的查找效率与⼆叉树的( (1))有关, 在 ((2))时其查找效率最低(1): A、⾼度 B、结点的多少 C、树型 D、结点的位置(2): A、结点太多 B、完全⼆叉树 C、呈单枝树 D、结点太复杂。

7、对⼤⼩均为n的有序表与⽆序表分别进⾏顺序查找,在等概率查找的情况下,对于查找失败,它们的平均查找长度就是((1)) ,对于查找成功,她们的平均查找长度就是((2))供选择的答案:A、相同的B、不同的9.分别以下列序列构造⼆叉排序树,与⽤其它三个序列所构造的结果不同的就是( )A.(100,80, 90, 60, 120,110,130) B、(100,120,110,130,80, 60, 90)C、(100,60, 80, 90, 120,110,130)D、 (100,80, 60, 90, 120,130,110)10、在平衡⼆叉树中插⼊⼀个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩⼦的平衡因⼦为0右孩⼦的平衡因⼦为1,则应作( ) 型调整以使其平衡。

数据结构习题参考答案与解析

数据结构习题参考答案与解析

习题1 参考答案1至8题答案略。

9.(1)【解】该逻辑结构为线性结构,其图形表示如下:(2)【解】该逻辑结构为树型结构,其图形表示如下:(3)【解】该逻辑结构为图型结构,其图形表示如下:(4)【解】该逻辑结构为线性结构,其图形表示如下:10.【解】该图书库存管理系统所要处理的数据对象为图书,所以该问题中涉及的数据元素为图书,设数据元素类型为bookType 类型。

每个数据元素应包含的数据项有图书编号、书名、作者、出版社、出版日期等。

可用一个表格(如下表)的形式表示图书间的逻辑关系,即该问题数学模型可采用简单的线性结构来表示。

根据问题需求功能目标,此模型的所需的主要处理操作有插入、删除、查找和修改等基本操作。

所以,现用抽象数据类型bookList 表示问题模型,其逻辑结构与基本操作的定义如下: (1)逻辑结构bookList=( D, {r} )D={b i | b i 为bookType 类型的元素,i=1,2,3, ....., n ,n ≥0} r ={ <bk i ,b i+1>| i=1,2,…, n -1, n ≥0 } (2)基本操作 ①初始化操作函数:InitBookList(&BL)。

……初始条件:图书表BL 不存在。

操作结果:构造一个空的图书表BL 。

②求图书表长度操作函数:bookListLength(BL)。

初始条件:图书表BL 已存在。

操作结果:返回图书表BL 中所包含的数据元素(图书)的个数。

③取图书表中元素操作函数:getBook(BL, i, &b)。

初始条件:图书表BL 已存在,且1≤i ≤bookListLength(BL)。

操作结果:用b 返回图书表BL 中的第i 个数据元素的值。

④按编号查找操作函数:locateById(BL, id)。

初始条件:图书表BL 已存在,id 是给定的一个图书编号。

操作结果:返回图书表BL 中图书编号为id 的数据元素的位序,若这样的数据元素不存在,则返回0。

农大数据结构答案

农大数据结构答案

农大数据结构答案(1)将两个递增的有序链表合并为一个递增的有序链表。

要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。

表中不允许有重复的数据。

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){pa=La->next; pb=Lb->next;Lc=pc=La; //用La的头结点作为Lc的头结点while(pa && pb){if(pa->datadata){ pc->next=pa;pc=pa;pa=pa->next;}else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}else {// 相等时取La的元素,删除Lb的元素pc->next=pa;pc=pa;pa=pa->next;q=pb->next;delete pb ;pb =q;}}pc->next=pa?pa:pb; //插入剩余段delete Lb; //释放Lb的头结点}(2)将两个非递减的有序链表合并为一个非递增的有序链表。

要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。

表中允许有重复的数据。

void union(LinkList& La, LinkList& Lb, LinkList& Lc, ) {pa = La->next; pb = Lb->next; // 初始化Lc=pc=La; //用La的头结点作为Lc的头结点Lc->next = NULL;while ( pa || pb ) {if ( !pa ) { q = pb; pb = pb->next; }else if ( !pb ) { q = pa; pa = pa->next; }else if (pa->data <= pb->data ) { q = pa; pa = pa->next; }else { q = pb; pb = pb->next; }q->next = Lc->next; Lc->next = q; // 插入}delete Lb; //释放Lb的头结点}(3)已知两个链表A和B分别表示两个集合,其元素递增排列。

2020年中国农业大学821数据结构考试大纲

2020年中国农业大学821数据结构考试大纲

821数据结构考试大纲一、考查目标1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。

2.掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。

3.能够选择合适的数据结构和方法进行问题求解。

二、考试形式和试卷结构1.试卷满分及考试时间试卷满分150分,考试时间180分钟。

2.答题方式答题方式为笔试、闭卷。

3.试卷内容与题型结构单选题10题每小题2分共20分填空题10题每小题2分共20分简答题5题每小题5分共25分综合题3题每小题15分共45 分算法题4题每小题10分共40 分三、考查内容1.概念(1)基本概念和术语●数据●数据结构●抽象数据类型(2)算法的描述和分析●算法、算法的时间复杂度和空间复杂度概念●算法描述和算法分析的方法,对于一般算法能分析出时间复杂度2.线性表(1)线性表的概念●线性表的逻辑结构●线性表的存储结构:顺序表,单链表,双链表,循环链表,静态链表(2)线性表的实现●顺序存储结构:查找、插入、删除等基本操作及其平均时间性能分析●链式存储结构:查找、插入、删除等基本操作及其平均时间性能分析3.栈、队列(1)栈和队列的概念●栈和队列的逻辑结构●栈和队列的存储结构:顺序栈,循环队列,链式栈,链式队列(2)栈和队列的实现●顺序存储结构:入栈、出栈、入队、出队等基本操作及其平均时间性能分析●链式存储结构:入栈、出栈、入队、出队等基本操作及其平均时间性能分析4.数组和广义表(1)数组和广义表的概念●数组和广义表的逻辑结构●数组的存储结构:特殊矩阵压缩存储、稀疏矩阵压缩存储(三元组表)●广义表的存储结构:链式存储(2)数组和广义表的实现●数组顺序存储结构:一般数组顺序存储的地址计算方法●广义表链式存储结构:非空广义表的求表头和表尾等基本操作5.树和二叉树(1)树和二叉树的概念●树和二叉树的逻辑结构●树和二叉树的存储结构:树的孩子兄弟表示法、二叉树的二叉链表●树和二叉树的遍历:树的三种遍历方法、二叉树的三种遍历方法●树和二叉树的转换方法(2)树和二叉树的实现●二叉树的递归遍历●Huffman树●Huffman编码6.图(1)图的概念●图的逻辑结构●图的存储结构:邻接矩阵、邻接表●图的遍历:深度优先搜索方法、广度优先搜索方法(2)图的实现●最小(代价)生成树:Prim和Kruskal方法●最短路径:Dijkstra方法●拓扑排序●关键路径7.查找(1)查找的概念●查找表、查找分类、查找结构●查找算法效率的评判标准:平均查找长度(2)静态表及其查找●顺序查找●折半查找(3)动态表及其查找●二叉排序树●平衡二叉树(4)Hash表及其查找●Hash函数●处理冲突方法●Hash查找(5)各种查找算法的分析8.排序(1)排序的概念●排序方法稳定性、排序分类●排序算法效率的评判标准(2)插入排序●简单插入排序●希尔排序(3)交换排序●冒泡排序●快速排序(4)选择排序●简单选择排序●堆排序(5)归并排序●二路归并排序●分治归并排序(6)各种排序算法的比较四、题型举例1.选择题在单链表中成功查找一个元素的等概率下的平均搜索长度是。

数据结构-9_真题(含答案与解析)-交互

数据结构-9_真题(含答案与解析)-交互

数据结构-9(总分100, 做题时间90分钟)一、单项选择题在每小题列出的四个选项中只有一个选项是符合题目要求的1.如果待排序的记录的规模很大,则在下面的排序方式中,我们最好不要选择使用( )SSS_SINGLE_SELA 快速排序B 直接插入排序C 堆排序D 归并排序分值: 2答案:B2.设数组A[0,m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行入队操作的语句是( )SSS_SINGLE_SELA sfront=(sfront+1)%mB sfront=(sfront+1)%(m+1)C srear=(srear+1)%mD srear=(srear+1)%(m+1)分值: 2答案:D3.线性表若采用链表存储结构时,要求内存中可用存储单元的地址( ) SSS_SINGLE_SELA 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 连续不连续都可以分值: 2答案:D4.串是一种特殊的线性表,其特殊性体现在( )SSS_SINGLE_SELA 可以顺序存储B 数据元素是一个字符C 可以链接存储D 数据元素可以是多个字符分值: 2答案:B5.对广义表((a),(b))进行下面的操作head(head((a),(b)))后的结果是( )SSS_SINGLE_SELA aB (C ( )D 不确定分值: 2答案:A6.将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为41的结点的双亲结点编号为( )SSS_SINGLE_SELA 42B 40C 21D 20分值: 2答案:D7.带头结点的单链表Head为空的判定条件是( )SSS_SINGLE_SELA Head=NULL;B Head↑.next=NULL;C Head↑.nextHead;D Head↑.next=Head↑分值: 2答案:B8.堆是一个键值序列(k1,k2,k…,k1…,k),对i=1,2…,[n/2],满足( )SSS_SINGLE_SEL Ak i ≤k2i≤k2i+1Bk i <k2i<k2i+1Ck i ≤k2i且k≤k2i+1(2i+1≤Dk i ≤k2i或ki≤k2i+l(2i+1≤分值: 2答案:C9.链栈与顺序栈相比,有一个比较明显的优点即( )SSS_SINGLE_SELA 插入操作更加方便B 通常不会出现栈满的情况C 不会出现栈空的情况D 删除操作更加方便分值: 2答案:B10.判断一个有向图是否存在回路,除了可以利用拓扑排序方法,还可以利用( )SSS_SINGLE_SELA 求关键路径的方法B 求最短路径的Dijkstra方法C 广度优先遍历方法D 深度优先遍历方法分值: 2答案:D11.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的( )SSS_SINGLE_SELA 前序B 中序C 后序D 层次序分值: 2答案:B12.假设有一个数组,它的行号从0到8,列号从0到10,数组中每个元素所占的存储空间为3个单元,则现在将此数组从某一个地址开始连续存放在一个存储器中,试问至少需要( )个存储单元才能完全将此数组存放进去。

中国农业大学_821数据结构_《数据结构》习题(2)

中国农业大学_821数据结构_《数据结构》习题(2)

第2章线性表一、回答题1. 线性表的两种存储结构各有哪些优缺点?2. 对于线性表的两种存储结构,如果有n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化,线性表的总数也会自动改变,在此情况下,应该选用哪种存储结构,为什么?3. 对于线性表的两种存储结构,如果线性表的总数基本稳定,并且很少进行插入和删除操作,但是要求以最快的速度存取线性表中的元素,那么应该选用哪种存储结构?试说明理由。

二、填空题1. 已知L是无头结点的单链表,且p结点既不是第一个结点,也不是最后一个结点,试从下列提供的语句中选出合适的语句序列:(1) 在p结点之后插入s结点:(2) 在p结点之前插入s结点:(3) 在单链表L首插入s结点:(4) 在单链表L后插入s结点:提供的语句:①p->next = s;② p ->next = p ->next ->next; ③ p ->next = s ->next; ④ s ->next = p ->next; ⑤ s ->next = L; ⑥ s ->next = p; ⑦ s ->next = NULL; ⑧ q = p;⑨ while ( p ->next ! = q ) p = p ->next ; ⑩ while ( p ->next ! = NULL ) p = p ->next ; p = q; p = L; L = s; L = p;2. 已知p 结点是某双向链表的中间结点,试从下列提供的语句中选出合适的语句序列。

(1) 在p 结点之后插入s 结点: (2) 在p 结点之前插入s 结点: (3) 删除p 结点的直接后继结点: (4) 删除p 结点的直接前驱结点:提供的语句:① p ->next = p ->next ->next; ② p ->prior = p ->prior ->prior; ③ p ->next = s; ④ p ->prior = s;11 12 13 14⑤ s ->next = p; ⑥ s ->prior = p; ⑦ s ->next = p ->next; ⑧ s ->prior = p ->prior; ⑨ p ->prior ->next = p ->next; ⑩ p ->prior ->next = p; p ->next ->prior = p; p ->next ->prior = s; p ->prior ->next = s; p ->next ->prior = p ->prior; q = p ->next; q = p ->prior; delete p; delete q;3. 在顺序表中插入或删除一个数据元素,需要平均移动个元素,具体移动的元素个数与有关。

中国农业大学_821数据结构_《数据结构》期末题(2套)

中国农业大学_821数据结构_《数据结构》期末题(2套)

其散列函数为 h(key) = key % 13,处理冲突的方法为双重散列法,探查序列为: hi = (h(key) + i * 3) % 13, i = 1, 2, … 问:对表中关键字 61 进行查找时,所需进行的比较次数为多少?依次写出每次的计算公式 和值。 (10 分) 四、阅读下面程序,回答问题 (10 分) void function(Link **Head) { Link *pt1, *pt2, *tmp; pt1 = *Head; if (pt1 == NULL) return; pt2 = pt1->next; pt1->next = NULL; while (pt2 != NULL) { tmp = pt2->next; pt2->next = pt1; pt1 = pt2; pt2 = tmp;
D. 排序算法
2. 在数据结构中,可用存储顺序代表逻辑顺序的数据结构为 ( 3. 在数据结构中,按逻辑结构可把数据结构分为 ( A. 静态结构和动态结构 C. 顺序结构和链式结构 4. 对链式存储的正确描述是 ( A. 结点之间是连续存储的 C. 各结点类型可以不一致 A. 串中元素只能是字母 C. 串是一种特殊的线性表 )
数据结构 试题(A )卷(闭卷)
2009--2010 学年第 一 学期
学号
一、单项选择题 (每题 1 分,共 15 分) 1. 在计算机科学中,算法指的是 ( A. 计算机程序 A. 顺序结构 ) B. 描述问题的方法 B. 二叉排序树
姓名
C. 解决问题的有限步骤序列 ) D. Hash 表 C. 链式结构 )
14. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 ( 15. 在一个顺序存储的有序序列中查找指定的关键字,其时间复杂度的下界是 ( A. O(logn) B. O(nlogn) C. O(n) D. O(1) 二、已知一个无向图的顶点集为{ a, b, c, d, e, f },其邻接矩阵如下所示(0-无边,1-有边)。

《数据结构》习题集:第9章_查找

《数据结构》习题集:第9章_查找

《数据结构》习题集:第9章_查找《数据结构》习题集:第9章_查找第9章找到1。

如果一个由18个元素组成的有序表被存储在一维数组中,[19],第一个元素被放入[1],现在执行二进制搜索,用于寻找[3]的比较序列的下标是()A1,2,3 B,5,2,3 C,5,3 D,4,2,3 2。

如果二进制排序树中有n个节点,则二进制排序树中的平均搜索长度为()2a . o(1)b . o(log2n)c . o(n)d . o(n)5。

如果有序表中有1000个元素,通过二进制搜索找到元素x所需的最大比较次数是()次。

A.25b.10c.7d.1 6。

顺序搜索的时间复杂度是()a . o(n)b . o(N2)c . o(n1/2)d . o(1 og2n)8。

()二叉树可以获得从小到大的有序序列A。

一阶遍历b .中间阶遍历c .后阶遍历d .层次遍历9。

将一组初始记录键序列设置为(13,18,24,35,47,50,62,83,90,115,134),然后通过二分法查找键90时要比较的键的数量为()如果哈希表的长度为100,并且哈希函数H(k)=k% P,那么P通常是最佳选择()a.99b.97c.91d.9311。

将键值插入二进制排序树的平均时间复杂度为() a . o(n)b . o(1 og2n)c . o(nlog2n)d . o(N2)12。

如果在顺序表A中有14个元素,[1:14],在通过二分法寻找元素A[4]的过程中,比较元素的顺序是()A.一个[1),一个[2),一个[3),一个[4),一个[1),一个[14),一个[7),一个[4] C.A[7],A[3],A[5],A[4] D. A[7],A[5],A[3],a [4] 13。

如果哈希表中有m个存储单元,哈希函数H(key)= key% p,那么p最好选择()A.小于或等于m b 的最大奇数,小于或等于m c的最大素数,小于或等于m d的最大偶数,小于或等于m 14的最大组合数。

中国农业大学_821数据结构_《数据结构》笔记(1)

中国农业大学_821数据结构_《数据结构》笔记(1)

1
建立数据结构模型设计抽象数据类型
面向对象编程的关键是分析客观问题中主要操作对象,并与计算机世界里特定抽象数据类型
的实例对象相对应,形成对象模型。程序主要流程可归结为各种实例对象间的相互操作。 集合是现代代数学的重要基础,也是当今计算机科学中经常用到的基本概念,在很多应用问 题中集合及其成员也是其中主要的操作对象。如何在计算机中表示和实现集合,取决于该集合的 大小和所进行的操作。假设现在讨论的问题中的集合操作仅限于“求并” ,而集合的大小和集合 的成员不限,则宜采用有序表表示。由此首先需要设计一个有序表的抽象数据类型并实现之,集 合求并的算法则通过有序表的实例对象的操作完成。其算法思想是:依次比较两个有序表对象的 每个元素,将符合“并”条件的元素复制到结果有序表对象中。 抽象数据类型“有序表”定义如下: ADT OrderedList { n≥0 } i = 2, … , n }
从问题到程序的求解过程
从提出实际问题到编写程序并最后调试通过形成软件,是软件工程学(研究大型软件的设计 方法)和程序设计方法学(研究小规模程序的设计方法)研究的范畴。这里我们仅以面向对象编 程的思想讨论以抽象数据类型为中心的程序设计方法。这个程序设计方法大致可以分为以下 4 个 步骤: (1) 建立数据结构模型设计抽象数据类型; (2) 进行主算法的设计; (3) 实现抽象数据类型; (4) 编制可以上机的程序代码并进行静态测试和动态调试。 下面以有序表为基础, 研究分析一个整数集合求并运算实例, 对上述 4 个步骤予以分别讨论。
// 处理 a <= b 的情况 ListInsert ( Lc, a ); // 在 Lc 中插入一个其值和 a 相同的元素 ia++; if ( a == b ) ib++; } // end_if else {

中国农业大学_821数据结构_《数据结构》习题(7)

中国农业大学_821数据结构_《数据结构》习题(7)

第7章图及应用一、问答题1. 在一个图中,所有顶点的度数之和等于所有边数的多少倍?2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的多少倍?3. 对图7-1(a)和(b)所示的有向图,试回答:(1) 每个顶点的入度和出度是多少;(2) 给出它们的邻接矩阵、邻接表、逆邻接表和十字链表表示。

图7-1 有向图4. 对图7-2所示的无向图,试回答:(1) 给出邻接矩阵和邻接表的表示;(2) 根据邻接表,给出从顶点v1作深度优先和广度优先遍历图中顶点的次序。

图7-2 无向图5. 对图7-3(a)和(b)所示的无向图,画出其深度优先生成树和广度优先生成树。

图7-3 无向图6. 对图7-4所示的带权无向图:(1) 按照普里姆算法,从顶点v1出发生成最小生成树,按生成次序写出各条边;(2) 按照克鲁斯卡尔算法,生成最小生成树,按生成次序写出各条边;(3) 画出其最小生成树,并求出它的权值。

图7-4 带权无向图7. 对图7-5所示的带权有向图,用迪杰斯特拉(Dijkstra)算法,试回答:(1) 带权邻接矩阵arcs是什么?(2) 从顶点v1到其他各顶点之间的最短路径是多少?并写出Dist数组的变化过程。

图7-5 带权有向图8. 对图7-6所示的带权有向图,用弗洛伊德(Floyd)算法,试回答:每一对顶点之间的最短路径试多少,并写出计算过程。

图7-6 带权有向图9. 已知有m个顶点的无向图,采用邻接矩阵结构存储,试回答:(1) 图中有多少边?(2) 任意两个顶点i和j之间是否有边相连?(3) 任意一个顶点的度是多少?10. 已知一个无向图,采用邻接表结构存储,试回答:(1) 图中有多少边,(2) 任意两个顶点i和j之间是否有边相连?(3) 任意一个顶点的度是多少?11. 对图7-7所示的AOE网所代表的一项计划,试回答:(1) 每一事件的最早开始时间和最迟开始时间是多少?(2) 该计划最早完成的时间是多少?图7-7 代表一项计划的AOE网12. 对图7-8所示的AOE网所代表的一项工程,试回答:(1) 每项活动的最早开始时间是多少?(2) 每项活动的最迟开始时间是多少?(3) 工程完成的最短时间是多少?(4) 关键活动是什么?图7-8 代表一项工程的AOE网二、填空题1. 在无权图G的邻接矩阵A中,若(i, j)或<i, j>属于图G的边集合,则对应元素A [i, j]等于、否则等于。

中国农业大学硕士研究生入学考试初试模拟题821数据结构(三套)

中国农业大学硕士研究生入学考试初试模拟题821数据结构(三套)

中国农业大学
2011 年攻读硕士学位研究生入学考试模拟试题(一)
科目代码: 821 科目名称: 数据结构
考生注意: 所有大题务必书写在考场提供的答题纸上,写在本试题单上的答题一 律无效(本题单不参与阅卷) 。
报考专业: 一、选择题 1. 算法的时间复杂度取决于( ) A.问题的规模 B. 待处理数据的初态 C. A 和 B
四、假设按低下标优先存储整型数组 A(-3:8,3:5,-4:0,0:7)时,第一个元素的字节 存储地址是 100,每个整数占 4 个字节,问 A(0,4,-2,5)的存储地址是什么?
五、算法题 1.设 s、t 为两个字符串,分别放在两个一维数组中,m、n 分别为其长度,判断 t 是否为 s 的子串。如果是,输出子串所在位置(第一个字符) ,否则输出 0。 (注:用程序实现)
2.下面关于线性表的叙述中,错误的是哪一个? A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 报考院校: C.线性表采用链接存储,不必占用一片连续的存储单元。 3. 栈在( )中应用。 B. 子程序调用 C. 表达式求值 D. A,B,C )
A. 递归调用
9 如果要求一个线性表既能较快的查找, 又能适应动态变化的要求, 则可采用( A. 分快查找 B. 顺序查找 C. 折半查找 D. 基于属性
10 组记录的关键码为(46,79,56,38,40,84) ,则利用快速排序的方法,以第一个记录 为基准得到的一次划分结果为( A.(38,40,46,56,79,84) C.(40,38,46,56,79,84) ) 。 B. (40,38,46,79,56,84) D. (40,38,46,84,56,79)
2.已知深度为 h 的二叉树以一维数组 BT(1:2 -1)作为其存储结构。请写一算法,求该二叉 树中叶结点的个数。

中国农业大学_821数据结构_《数据结构》习题(8)

中国农业大学_821数据结构_《数据结构》习题(8)

6. 已知长度为 12 的表 ( Jan, Feb, Mar, Apr, May, Jun, July, Aug,, Sep, Oct, Nov, Dec ): (1) 试按表中顺序依次将元素插入一棵初始为空的二叉树。 (字符之间以字典顺序比较 大小) 画出插入完成之后的二叉排序树, 且求在等概率的情况下查找成功的平均查找长度。 (2) 如果对表中元素先排序构成有序表,试求在等概率情况下对有序表进行折半查找 时,查找成功的平均查找长度。 (3) 按表中元素顺序构造出一棵相应的平衡二叉树,并求出在等概率的情况下查找成 功的平均查找长度。 7. B+树和 B-树的主要差异树什么? 8. 什么叫哈希法?哈希法中为什么会出现冲突? 9. 设关键值集合为 { 016, 087, 154, 170, 275, 426, 503, 509, 512, 612, 653, 678 },设计 一种哈希表,取装填因子 = 0.5,根据选择的哈希函数,计算出对应的地址,并统计出发 生冲突的次数。 10. 设关键值集合为 { SUN, GAO, HUA, WAN, PEN, YAN, LIU, ZHE, YAO, CHE }, 试 构造装填因子 = 10/13 的哈希表,取关键值的首字母在字母表中的序号(字典序)作为哈 希函数值,用线性探测法解决冲突,画出其哈希表。 11. 假定一个待哈希存储的线性表为 ( 32, 75, 63, 48, 94, 25, 36, 18, 70 ), 哈希地址空间 为[ 0 . . 10 ],如果采用除留余数法构造哈希函数和分别采用步长为 1 及步长为 3 的线性探 测法处理冲突,试分别给出它们对应的哈希表,并分别求出在等概率情况下查找成功时的 平均查找长度。 12. 将序列 (13, 15, 22, 8, 34, 19, 21) 插到一个初始时是空的哈希表中, 哈希函数采用 hash (x) = 1 + ( x MOD 7 )。 (1) 使用线性探测法解决冲突; (2) 使用步长为 3 的线性探测法解决冲突;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章内部排序
一、问答题
1. 什么是内部排序?什么是排序方法的稳定性?
2. 对于本章介绍的内部排序方法,哪几种是稳定的?哪几种是不稳定的?对不稳定的排序方法试举例说明。

3. 对于给定的一组记录的关键字:23,13,17,21,30,60,58,28,30,90。

试分别写出用下列排序方法对其进行排序时,每一趟排序后的结果:
(1)直接插入排序;
(2)希尔排序;
(3)冒泡排序;
(4)直接选择排序;
(5)快速排序
(6)堆排序
(7)归并排序。

4. 对长度为n的记录序列进行快速排序时,所需要的比较次数依赖于这n个元素的初始序列。

(1)n = 8时,在最好的情况下需要进行多少次比较?试说明理由。

(2)给出n = 8时的一个最好情况的初始排列实例。

5 试为下列各种情况选择合适的排序方法:
(1)n = 30,要求在最坏的情况下,排序速度最快;
(2)n = 30,要求排序速度既要快,又要排序稳定。

6. 判别以下序列是否为堆(所有的非叶子结点的关键字值k i均不大于其左右两个分支结点的关键字值k2和k2i+1。

),如果不是,则把它调整为堆。

(1)( 100, 86, 48, 73, 35, 39, 42, 57, 66, 21 );
(2)( 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 );
(3)( 103, 97, 56, 38, 66, 23, 42, 12, 30, 52, 06, 20 );
(4) ( 05, 56, 20, 03, 23, 40, 38, 29, 61, 05, 76, 28, 100 )。

7. 一组待排序记录的关键字是:986,321,123,432,500,654,018,765,987,210。

按照LSD方法写出基数排序的过程和结果。

8. 试证明:如果对于一个长度为n的任意文件进行排序,则至少需进行nlog2n次比较。

9. 试构造对5个整数元素进行排序,最多只用7次比较的算法思想。

10. 有n个不同的英文单词,它们的长度相等,均为m,如果n≥50,且m<5,试问采用什么排序方法时间复杂度最佳?为什么?
11. 如果只想得到一个序列中第k个最小元素的部分排序序列,最好采用什么排序方法?为什么?如果有这样一个序列:( 57, 40, 38, 11, 13, 34, 48, 75, 25, 6, 19, 9, 7 ),得到其第4个最小元素之前的部分序列( 6, 7, 9, 11 ),使用所选择的算法实现时,要执行多少次比较?
12. 对于快速排序的非递归算法,可以用队列(而不用栈)实现吗?如果能,试说明理由;如果不能?也要说明理由。

二、填空题
1. 在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是。

2. 设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用排序法。

3. 在待排序的元素序列基本有序的前提下,效率最高的排序方法使是。

4. 一组记录的关键字为( 46, 79, 56, 38, 40, 84 ),则利用堆排序的方法建立的初始堆为。

5. 一组记录的关键字为( 46, 79, 56, 38, 40, 84 ),则利用快速排序的方法,以第1个记录为基准得到的一次划分结果为。

6. 排序方法中,从未排序序列中依次取出元素,与已排序序列(初始为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为。

7. 排序方法中,从未排序序列中依次取出元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为。

8. 用某种排序方法对线性表( 25, 84, 21, 47, 15, 27, 68, 35, 20 ) 进行排序,元素序列变化情况如下:
(1) 25, 84, 21, 47, 15, 27, 68, 35, 20
(2) 20, 15, 21, 25, 47, 27, 68, 35, 84
(3) 15, 20, 21, 25, 35, 27, 47, 68, 84
(4) 15, 20, 21, 25, 27, 35, 47, 68, 84
则采用的排序方法是。

9. 快速排序方法在情况下最不利于发挥其长处。

10. 在插入排序、选择排序、快速排序及归并排序中,方法要求内存量最大。

11. 在插入排序、选择排序、快速排序及归并排序中,平均查找长度最小的是。

12. 在一组记录( 54, 38, 96, 23, 15, 72, 60, 45, 83 ) 进行直接插入排序中,当把第7个记录60插入到有序表时,为寻找插入位置需要比较次。

13. 在利用快速排序方法对一组记录( 54, 38, 96, 23, 15, 72, 60, 45, 83 ) 进行快速排序排序时,递归调用而使用的栈所能够达到的最大深度为,总共需要递归调用的次数为,其中第二次递归调用是对一组记录进行快速排序。

14. 在堆排序、快速排序和归并排序中,如果只从存储空间考虑,则应选取方法,其次选取方法,最后选取方法;如果只从排序结果稳定性考虑,则应选取方法;如果只从平均情况下排序最快考虑,则应选取;如果只从最坏情况下排序最快并且要节省内存考虑,则应选取方法。

15. 在堆排序和快速来序中,如果原始记录接近正序或反序,则选用;如果原始记录无序,则最好选用。

16. 在插入排序和选择来序中,如果初始数据基本正序,则选用。

三、算法题
1. 设计一个算法,一个线性表中的元素为正整数或负整数:
(1)将正整数和负整数分开,使线性表的前一半为负整数,后一半为正整数;
(2)不要求对这些元素排序,但是要求尽量减少交换的次数。

2. 设计一个双向冒泡排序算法,即在排序过程中交替改变扫描方向。

3. 设计一个直接选择排序的改进算法,将数组中的元素按照降序排列。

4. 设计一个算法,在含有n个元素的堆中增加一个元素,且调整为堆。

5. 设计一个算法,指出一个无序数序中的任意一个元素是第几大元素(从小到大数),要求比较的次数最小。

6. 设计一个插入排序的改进算法,通过折半查找法实现在插入排序中寻找插入位置的操作。

7. 设计一个算法,将给定的两个有序表A和B(均从小到大)归并成一个有序表C。

8. 设计一个算法,设有整数0 ~ n-1存放在整型数组A[0..n-1]中,对A排序,要求时
间复杂度为O(n),且只用常量空间复杂度O(1)。

相关文档
最新文档