算法与数据结构重点题型
Acm竞赛常用算法与数据结构

• 每次用堆取出x进行计算,O(mnlogmn)。
28
哈希表(Hash)
• 理论上查找速度最快的数据结构之一 • 缺点: 需要大量的内存 需要构造Key
29
Hash表的实现
• 数组 • 冲突解决法 • 开散列法 • 闭散列法 C++ sgi stl 实现
30
Hash Key的选取
• 数值: • 方法一:直接取余数(一般选取质数M最为除 数) • 方法二:平方取中法,即计算关键值的平方, 2 r 的表 再取中间r位形成一个大小为
7
常见题型
•Dynamic Programming(动 态规划) •Greedy(贪心) •Complete Search(穷举) •Flood Fill (种子填充)
8
常见题型
• Shortest Path (最短路径) • Recursive Search Techniques (回溯) • Minimum Spanning Tree (最小 生成树) • Knapsack(背包)
22
Parity(ceoi99)
• 从整个01序列肯定是无法入手的,因为它 的长度高达109。 • 从范围比较小的n入手。也就是说我们需要 对信息进行一些特殊的处理。 • a b even/odd,那么将元素b指向a-1, 边的权值是even/odd。 • 下面我们由样例来说明一下这个处理方法。
23
11
12
枚举法
• 又叫穷举法,它利用了计算机计算 速度快且准确的特点,是最为朴素 和有效的一种算法。
• 不是办法的办法
• 但有时却是最好的办法
13
Pizza Anyone? (ZOJ 1219)
• 题目大意: 你需要为你和你的朋友们订一个皮萨。 每个朋友都会告诉你他们想和不想放进皮萨 里的东西。 你是否能订一个皮萨,让他满足每个人 至少一个条件。 假设一共有16种东西可以放进皮萨。
数据结构复习题汇总

数据结构复习题汇总黄⽼师:题型结构如下:单项选择题,15⼩题,30分;填空题,5⼩题,10分;综合应⽤题,50分(树、图、查找)算法设计与分析,2选1,10分(线性结构)试卷中⼀些算法只给英⽂名称;考查范围(⿊体字为建议的重点考查内容;红字为备注;蓝字为拟纳⼊的考研⼤纲内容)⼀、绪论(⼀)算法、数据结构基本概念(⼆)算法分析中O(f(n))符号的含义(三)时间复杂度简单分析表⽰⼆、线性表(⼀)线性表的定义和基本操作(⼆)线性表的实现1.顺序存储2.链式存储3.线性表的应⽤三、栈、队列(⼀)栈和队列的基本概念(⼆)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应⽤四、树与⼆叉树(⼀)树的概念(⼆)⼆叉树1.⼆叉树的定义及其主要特征2.⼆叉树的顺序存储结构和链式存储结构3.⼆叉树的遍历及应⽤(三)树、森林1. 森林与⼆叉树的转换2. 树的存储结构;3.树和森林的遍历4.线索⼆叉树的基本概念和构造(四)⼆叉树的应⽤1.哈夫曼(Huffman)树和哈夫曼编码2.⼆叉排序树五、图(⼀)图的基本概念(⼆)图的存储及基本操作1.邻接矩阵法2.邻接表法(三)图的遍历1.深度优先搜索2.⼴度优先搜索(四)图的基本应⽤1.最⼩(代价)⽣成树2.最短路径3.拓扑排序4.关键路径六、查找(⼀)查找的基本概念(⼆)顺序查找法(三)折半查找法(四)⼆叉查找树及其基本操作(只考察基本概念)(五)平衡⼆叉树(只考察基本概念)(六)散列(Hash)表(七)查找算法的分析及应⽤七、排序(⼀)排序的基本概念(⼆)直接插⼊排序(三)⽓泡排序(bubble sort)(四)简单选择排序(五)希尔排序(shell sort)(六)快速排序(七)堆排序(⼋)⼆路归并排序(merge sort)(九)各种排序算法的⽐较(⼗)排序算法的应⽤选择题1、顺序队列的出队操作,正确修改队⾸指针的是( B )(A)sq.front = (sq.front+1)%maxsize; (B)sq.front = sq.front+1;(C)sq.rear = (sq. rear +1)%maxsize; (D)sq.rear = sq. rear +1;2、⾮空的循环单链表head的尾结点(由指针p指)满⾜( C )(A)p->next = NULL (B)p = NULL (C)p->next = head (D)p = head3、在单键表中,删除p所指结点的直接后继,其中指针修改为( A )(A)p->next = p->next ->next; (B)p = p->next; p->next = p->next->next;(C)p->next = p->next; (D)p = p->next ->next;4、通常要求同⼀逻辑结构中的所有数据元素具有相同的特性,这意味着( B )(A)数据元素具有同⼀特点(B)不仅数据元素所包含的数据项的个数要相同,⽽且对应数据项的类型也要⼀致(C)每个数据元素都⼀样(D)数据元素所包含的数据项的个数要相等5、关于线性表,下列说法正确的是( D )(A)每个元素都有⼀个直接前驱和直接后继(B)线性表中⾄少要有⼀个元素(C)表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩的(D)除第⼀元素和最后⼀个元素外,其余每个元素都有⼀个且仅有⼀个直接前驱和直接后继6、带头结点的单链表,其表头指针为head,则该单链表为空的判断条件是( B )(A)head == NULL (B)head->next == NULL(C)head->next == head (D)head !== NULL7、含n个顶点的连通图中的任意⼀条简单路径,其长度不可能超过(C )(A)1 (B)n/2 (C)n-1 (D)n8、设有⼀个顺序栈S,元素S1, S2, S3, S4, S5, S6依次进栈,如果6个元素出栈的顺序是S2, S3, S4, S6, S5, S1,则栈的容量⾄少应该是( B )(A)2 (B)3 (C)5 (D)69、设深度为k的⼆叉树上只有度为0和度为2的结点,则这类⼆叉树上所含结点的总数最少为( C )个(A)k+1 (B)2k (C)2k -1 (D)2k +110、从具有n个结点的单链表中查找指定结点时,若查找每个结点的概率相等,在查找成功的情况下,平均需要⽐较( D )个结点。
数据结构期末考试复习总结

《数据结构》期末考试题型及分值(1)简答题6题*5分=30分简要回答要点(2)分析题6题*5分=30分给出结果(3)设计题1题*10分=10分设计思想及结果(4)编程题1题*10分=10分完整代码(5)综合题1题*20分=20分抽象数据类型的定义、表示、实现、算法分析{定义=功能(ADT)表示=存储结构体实现=算法(基本操作)算法分析=时间、空间复杂度}考试概念有:1.数据结构{一、线性表(栈-队-列-串-数组-广义表-逻辑结构-存储结构-运算结构)二、非线性表(集合-树-图)}2.抽象数据类型数据对象-数据关系-基本操作3.算法性质-要求(设计)-效率(度量)4.实例查找:高效查找算法排序:高效的排序算法分析题考试题目参考(1)1-2-3-4-5-6顺序建BBST(2)6-5-4-3-2-1顺序建BBST简答题实例设计题:(1)(2)数据结构试卷(一)三、计算题(每题 6 分,共24分)1. 在如下数组A 中存储了一个线性表,表头指针为A [0].next ,试写出该线性表。
A 0 1 2 3 4 5 6 7data 60 50 78 90 34 40 next357241线性表为:(78,50,40,60,34,90)⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0111010*******110101011102.请画出下图的邻接矩阵和邻接表。
3. 已知一个图的顶点集V 和边集E 分别为:V={1,2,3,4,5,6,7};E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。
用克鲁斯卡尔算法得到的最小生成树为:(1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。
数据结构期末考试复习总结(最新编写)

数据结构试卷(二)
5
1204 班 学委精心整理 数据结构期末复习
三、应用题(36 分) 1. 设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第 4 趟简单选择
排序和第 4 趟直接插入排序后的结果。 (22,40,45,48,80,78),(40,45,48,80,22,78)
1204 班 学委精心整理 数据结构期末复习
《数据结构》期末考试题型及分值
(1)简答题 6 题*5 分=30 分
简要回答要点
(2)分析题 6 题*5 分=30 分
给出结果
(3)设计题 1 题*10 分=10 分
设计思想及结果
(4)编程题 1 题*10 分=10 分
完整代码
(5)综合题 1 题*20 分=20 分 抽象数据类型的定义、表示、实现、算法分析
3
1204 班 学委精心整理 数据结构期末复习
1. 在如下数组 A 中链接存储了一个线性表,表头指针为 A [0].next,试写出该线性表。 A0 12 34 56 7
data
60 50 78 90 34
40
next 3 5 7 2 0 4
1
0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1
H(63)=63 mod 7=0;
H(22)=22 mod 7=1; ….冲突
(1)计算出每一个元素的散列地址并在下图中填写出散列表:
7
1204 班 学委精心整理 数据结构期末复习
`
0
1
2
3
4
5
6
63
36
15
22
40
(2)求出在查找每一个元素概率相等情况下的平均查找长度。
算法练习题

算法练习题一、基础算法1. 编写一个程序,实现一个冒泡排序算法。
2. 实现一个选择排序算法。
3. 实现一个插入排序算法。
4. 编写一个函数,计算一个整数数组中的最大值和最小值。
5. 编写一个函数,实现二分查找算法。
6. 编写一个函数,实现快速排序算法。
7. 编写一个函数,判断一个整数是否为素数。
8. 编写一个函数,实现反转一个整数数组。
9. 编写一个函数,计算两个整数数组的交集。
10. 编写一个函数,判断一个字符串是否为回文。
二、数据结构11. 实现一个单链表的基本操作,包括插入、删除、查找。
12. 实现一个双向链表的基本操作,包括插入、删除、查找。
13. 实现一个栈的基本操作,包括压栈、出栈、查看栈顶元素。
14. 实现一个队列的基本操作,包括入队、出队、查看队首元素。
15. 实现一个二叉树的基本操作,包括插入、删除、查找。
16. 实现一个二叉搜索树的基本操作,包括插入、删除、查找。
17. 实现一个哈希表的基本操作,包括插入、删除、查找。
三、搜索与图论18. 编写一个程序,实现深度优先搜索(DFS)算法。
19. 编写一个程序,实现广度优先搜索(BFS)算法。
20. 编写一个程序,求解迷宫问题。
21. 编写一个程序,计算一个有向图的拓扑排序。
22. 编写一个程序,计算一个无向图的欧拉回路。
23. 编写一个程序,计算一个加权无向图的最小树(Prim算法)。
24. 编写一个程序,计算一个加权有向图的最短路径(Dijkstra算法)。
25. 编写一个程序,计算一个加权有向图的所有顶点对的最短路径(Floyd算法)。
四、动态规划26. 编写一个程序,实现背包问题。
27. 编写一个程序,计算最长公共子序列(LCS)。
28. 编写一个程序,计算最长递增子序列(LIS)。
29. 编写一个程序,实现编辑距离(Levenshtein距离)。
30. 编写一个程序,实现硬币找零问题。
31. 编写一个程序,实现矩阵链乘问题。
数据结构与算法设计与分析考核试卷

8.在冒泡排序中,每一趟排序都能确定一个元素的最终位置。()
答案:______
9. Prim算法和Kruskal算法都可以用来求解最小生成树问题,但Prim算法总是从某一顶点开始,而Kruskal算法总是从某一权值最小的边开始。()
答案:______
10.在一个递归算法中,如果递归调用不是算法的最后一个操作,那么这种递归称为尾递归。()
B.邻接表适合表示稀疏图
C.邻接多重表适合表示无向图
D.邻接表和邻接多重表适合表示有向图
14.以下哪些算法属于分治算法?()
A.快速排序
B.归并排序
C.二分查找
D.动态规划
15.以下哪些情况下,动态规划比贪心算法更适合解决问题?()
A.存在重叠子问题
B.问题具有最优子结构
C.需要考虑所有可能的选择
D.问题可以通过局部最优达到全局最优
C.插入一个节点
D.查找某个节点
5.以下哪些算法可以用于解决最小生成树问题?()
A. Kruskal算法
B. Prim算法
C. Dijkstra算法
D. Bellman-Ford算法
6.以下哪些数据结构可以用来实现堆?()
A.数组
B.链表
C.栈
D.队列
7.关于图的深度优先遍历和广度优先遍历,以下哪些说法是正确的?()
________________________________
2.动态规划算法通常用于解决最优化问题,请阐述动态规划算法的三个基本要素,并给出一个动态规划问题的实例。
________________________________
________________________________
数据结构期末考试重点

数据结构期末考试重点题型1 算法的时间复杂度(不会出简单的for循环)例题.1下面程序段的时间复杂度为 D 。
for (k=1;k<=j;k++){int i=1;while (i<=n)i=i*2; }A O(n)B O(n1/2)C O(log2n)D O(n*log2n)例题.2下面程序段的时间复杂度的量级为( O(n3) )for(i=1;i<=n;i++)for (j=1;j<=i;j++)for (k=1;k<=j;k++)x=x+1;例题3.看下面程序的时间复杂度为O(0)Int sum;For(int i=0;i<0;++i)For(int j=0;j<n;++j)Sum+=i+j;O(1)初始化线性表检查线性表是否为空O(n)删除线性表中的所有元素;得到线性表的长度;得到线性表中指定序号为pos的元素;遍历一个线性表;从线性表中查找具有给定值的第一个元素;更新线性表中具有给定值的第一个元素;向线性表中按给定条件插入一个元素;从线性表中删除符合给定条件的第一个元素O(n2)对线性表进行排序2几种数据结构(数据结构定义:具有结构的数据元素的集合)逻辑结构:集合、线性结构(线性表、广义表、堆栈和队列)非线性结构(树、图)存储结构:顺序存储结构、链式存储结构、索引结构、散列结构等集合和线性结构:1 :1 树形结构:1 :N 图形结构:N : N例题:设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是()。
(A) 线性结构(B) 树型结构(C) 物理结构(D) 图型结构3 线性表顺序存储和链接存储的特点顺序存储:随机存取,预先定义表长;插入删除时有大量元素的移动(当下标为1开始的实话移动n-i+1,当下标为0开始的实话移动n-i),查找方便。
数据结构习题(题型版)

三、填空题1.数据的物理结构包括数据元素的表示和数据元素间关系的表示。
2. 对于给定的n 个元素,可以构造出的逻辑结构有线性结构、树形结构、图形结构、集合四种。
3.数据的逻辑结构是指数据的组织形式,即数据元素之间逻辑关系的总体。
而逻辑关系是指数据元素之间的关联方式或称“邻接关系”。
4.一个数据结构在计算机中表示(又称映像)称为存储结构。
5.抽象数据类型的定义仅取决于它的一组逻辑特性,而与在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。
6.数据结构中评价算法的两个重要指标是时间复杂度和空间复杂度。
7. 数据结构是研讨数据的逻辑结构和物理结构,以及它们之间的相互关系,并对与这种结构定义相应的操作,设计出相应的算法。
8.一个算法具有5个特性: 有穷性、确定性、可行性,有零个或多个输入、有一个或多个输出。
11.下面程序段中带下划线的语句的执行次数的数量级是(log2n)i=1;WHILE i<n DO i=i*2;12. 下面程序段中带下划线的语句的执行次数的数量级是(nlog2n )。
i=1;while (i<n)for(i=1;i<=n;i++)x=x+1;i=i*2;15. 下面程序段的时间复杂度为O(n) 。
(n>1)sum=1;for (i=0;sum<n;i++) sum+=1;8.对于一个数据结构,一般包括哪三个方面的讨论逻辑结构、存储结构、操作(运算)4.在一个长度为n 的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动n-i+1 个元素。
5.在单链表中设置头结点的作用是主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。
另外,不论链表是否为空,链表指针不变。
10.链接存储的特点是利用指针来表示数据元素之间的逻辑关系。
11.顺序存储结构是通过物理上相邻表示元素之间的关系的;链式存储结构是通过指针表示元素之间的关系的。
算法笔试题

算法笔试题算法笔试题是在一定的时间内解决计算问题的方法的考试。
这种考试通常检测考生在数据结构、算法和计算机编程方面的知识和技能。
针对这样的笔试题,可以准备一些相关的参考内容,以帮助考生更好地准备和应对考试。
一、数据结构篇数据结构是任何计算机程序的基础,因此在算法笔试中往往会涉及到数据结构的相关题目。
主要包括以下几个方面的内容:1. 数组和链表:- 数组和链表的定义和基本操作,比如插入、删除、查找元素等。
- 数组和链表的优缺点及应用场景。
2. 栈和队列:- 栈和队列的定义,以及它们的基本操作,比如入栈、出栈、入队、出队等。
- 栈和队列的应用,比如求解括号匹配问题、实现计算器等。
3. 树和图:- 二叉树的定义,以及二叉树的遍历算法,包括前序、中序、后序遍历。
- 图的定义,以及图的遍历算法,比如深度优先搜索(DFS)和广度优先搜索(BFS)。
二、算法篇算法是解决问题的一系列步骤或方法,因此在算法笔试中往往会涉及到一些常见的算法。
主要包括以下几个方面的内容:1. 排序算法:- 常见的排序算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序等。
- 各个排序算法的时间复杂度和空间复杂度,以及它们的优缺点。
2. 查找算法:- 顺序查找和二分查找的基本思想和实现方式。
- 各个查找算法的时间复杂度和空间复杂度,以及它们的适用场景。
3. 动态规划:- 动态规划的基本思想和解题过程,包括状态定义、状态转移方程等。
- 动态规划算法的时间复杂度和空间复杂度,以及它们的应用场景。
三、编程篇算法笔试中通常还会包括一些编程题,要求考生使用某种编程语言实现指定的算法。
针对这样的编程题,可以准备以下内容:1. 编程语言基础:- 熟悉常见的编程语言的基本语法和特性,比如C/C++、Java、Python等。
- 理解编程语言的变量、数据类型、循环结构、条件语句等。
2. 编程技巧:- 掌握常见的编程技巧和优化方法,比如递归、迭代、分治等。
计算机科学考研必备数据结构与算法题型解析

计算机科学考研必备数据结构与算法题型解析数据结构和算法是计算机科学考研的重要内容,掌握好这些知识对于提高考试成绩至关重要。
本文将对计算机科学考研必备的数据结构和算法题型进行解析,帮助考生更好地理解和应对考试中的这些题目。
一、线性表线性表是最基本的数据结构之一,常见的线性表包括数组、链表和栈等。
考研中常出现与线性表相关的题目,要求考生熟练掌握线性表的基本操作和应用。
1. 数组数组是一种连续存储数据的线性表,具有随机访问的特性。
考研中可能出现与数组相关的题目,如数组的逆序、元素的插入和删除等操作。
2. 链表链表是一种动态存储数据的线性表,通过节点之间的指针链接起来。
考研中可能出现与链表相关的题目,如链表的逆序、节点的插入和删除等操作。
3. 栈栈是一种特殊的线性表,具有后进先出的特性。
考研中可能出现与栈相关的题目,如栈的应用、栈的实现等。
二、树与图树和图是常见的非线性数据结构,具有丰富的应用场景。
考研中涉及树与图的题目较多,要求考生掌握树和图的基本操作和相关算法。
1. 二叉树二叉树是一种特殊的树结构,每个节点最多只有两个子节点。
考研中可能出现与二叉树相关的题目,如二叉树的遍历、节点的插入和删除等操作。
2. 图图是由节点(顶点)和边组成的数据结构,用于描述各种实际问题的模型。
考研中可能出现与图相关的题目,如最短路径、最小生成树等算法的应用。
三、排序与查找排序和查找是算法中的经典问题,也是考研中常见的题型。
考生需要熟练掌握各种排序和查找算法,并能够分析其时间复杂度和空间复杂度。
1. 排序算法考研中常考察各种排序算法,如冒泡排序、选择排序、插入排序、快速排序等。
考生需要理解这些算法的原理和步骤,并能够分析其时间复杂度和空间复杂度。
2. 查找算法考研中可能出现与查找算法相关的题目,如二分查找、哈希查找、二叉查找树等。
考生需要了解这些算法的原理和应用场景,并能够分析其时间复杂度和空间复杂度。
四、动态规划与贪心算法动态规划和贪心算法是算法设计中的重要方法,也是考研中常见的题型。
北森题库算法笔试题

北森题库算法笔试题
北森题库算法笔试题通常包含以下几种常见的题型:
1. 基础算法题:这类题目通常涉及到数据结构、算法和编程语言的基础知识,例如链表、数组、二叉树等。
题目可能会要求你实现某个函数,或者解决某个具体的算法问题。
2. 算法优化题:这类题目通常涉及到算法的优化和改进,例如时间复杂度优化、空间复杂度优化等。
题目可能会要求你改进一个算法,或者找到一个更高效的算法。
3. 系统设计题:这类题目通常涉及到系统设计和架构,例如设计一个分布式系统、设计一个搜索引擎等。
题目可能会要求你设计一个系统,或者解决某个系统设计问题。
4. 数学题:这类题目通常涉及到数学知识和数学方法,例如概率统计、线性代数等。
题目可能会要求你应用数学方法解决某个问题。
以上是北森题库算法笔试题的一些常见题型,具体的题目和难度会根据招聘岗位和公司要求而有所不同。
建议在准备算法笔试题时,多刷题、多总结,不断提高自己的算法和编程能力。
数据结构复习题

《数据结构》考试题型及分数分布一、单项选择题,15小题,占30分二、判断题,10小题,占10分三、填空题,10小题,占20分四、概念与术语解释,3小题,占9分五、分析简答及应用题,4小题,占21分六、算法设计与分析题,1小题,占10分一、单项选择题1. 线性表采用链式存储时,其地址( A )。
A:连续与否均可以 B:部分地址必须是连续的C:一定是不连续的 D:必须是连续的2. 在单链表指针为p的结点之后插入指针为s结点,正确的操作是( A )。
A:s->next=p->next;p->next=s; B:p->next=s;s->next=p->next;C:p->next=s;p->next=s->next; D:p->next=s->next;p->next=s;3.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A:单链表 B:仅有头指针的单循环链表C:双向链表 D:仅有尾指针的单循环链表4. 有10个结点的无向图至少有( B )条边才能确保其是连通图。
A:8 B:9 C:10 D:115. 初始序列已经按键值有序时,用直接插入算法进行排序,需要比较的次数为( D )。
A:n2 B:nlog2n C:log2n D:n-16. 从逻辑结构上可以把数据结构分成( C )A:动态结构和静态结构 B:顺序结构和链式结构C:线性结构和非线性结构 D:内部结构和外部结构7. 数据的基本单位是( B )A:数据结构 B:数据元素C:数据项 D:文件8. 在一个带表头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( D )。
A:HL=p; p->next=HL; B:p->next=HL; p=HL;C:p->next=HL; HL=p->next; D:p->next=HL->next; HL->nxet=p;9. 关键路径是事件结点网络中( A )。
866数据结构题型

866数据结构的题型包括选择题和计算题、代码题。
其中,选择题有10个,每个2分,共计20分;计算题和代码题有2个,每个10分,共计20分。
在具体考察内容方面,主要会涉及以下知识点:无向图和有向图边和结点关系、无向完全图和有向完全图边数、邻接矩阵、邻接表与图之间转换、BFS(广度优先搜索)、DFS(深度优先搜索)、最小生成树构造两种方法(Prim、Kruskal)、Dijkstra计算最短路径、拓扑排序序列、关键路径计算等。
此外,还有折半查找以及折半查找树、散列查找(线性探测法、平方探测法)、自组织线性表三种规则、基于比较的算法,至少需要比较次数等知识点。
以上信息仅供参考,具体题型和分值可能会根据学校和考试要求有所不同,建议根据实际情况进行备考。
884数据结构题型分布

884数据结构科目的题型分布通常包括选择题、填空题、判断题、简答题和编程题等。
其中,选择题和填空题主要考察对基本概念和原理的掌握程度,判断题则考察对一些基本概念和原理的理解和应用能力。
简答题则主要考察对数据结构的基本概念、原理和应用的理解,以及分析问题和解决问题的能力。
编程题则主要考察对数据结构算法的实现和应用能力。
在具体分布上,选择题和填空题通常占据较大的比例,判断题和简答题也有一定的比例,而编程题的比例相对较小。
但具体的分布情况可能会因考试难度和要求而有所不同。
因此,在备考884数据结构科目时,需要全面掌握基本概念和原理,注重理解和应用,同时加强编程能力和问题解决能力的训练。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 设有一个二维数组A [m ][n ],假设A [0][0]存放位置在644(10),A [2][2]存放位置在676(10),每个元素占一个空间,问A [3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
A .688 B .678 C .692 D .6962. 若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A [3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,33. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H (K )=K %9作为散列函数,则散列地址为1的元素有( )个,A .1B .2C .3D .4 4. 设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.85、在如下数组A 中链接存储了一个线性表,表头指针为A [0].next ,试写出该线性表。
9 45 45 56 69 87Adata next6、请画出下图的邻接矩阵和邻接表。
并写出深度优先和广度优先遍历7、 在一个单链表中,若q 所指结点是p 所指结点的前驱结点,若在q与p 之间插入一个s 所指的结点,则执行( )。
A s →link=p →link; p →link=s; B p →link=s; s →link=q;C p →link=s →link; s →link=p;D q →link=s; s →link =p;8、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()A 24B 71C 48D 539、已知一组记录的排序码为(46,79,56,38,40,80, 95,24),写出对其进行快速排序的每一次划分结果。
(24 40 38)46 (56 80 95 79)24 (40 38)46 56 (80 95 79)24 (38)40 46 56 (79)80 (95)10、一个线性表为B=(12,23,45,57,20,03,78,31,15,36),设散列表为HT[0..12],散列函数为H(key)= key % 13并用线性探查法解决冲突,请画出散列表,并计算等概率情况下查找成功的平均H(31)=5 冲突,H(31)=(5+1)% 13=6冲突,H(31)=(5+2)% 13=7冲突H(31)=(5+3)% 13=8冲突H(31)=(5+4)% 13=9H(36)=10 冲突,H(36)=(10+1)% 13=11ASL=(7+3+5+2)/10=1.711、将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为()A.O(1)B.O(n)C.O(m)D.O(m+n)12、在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )A .eB .2eC .n 2-eD .n 2-2e13、已知一棵完全二叉树中共有768个叶子结点。
14、在有序表(12,24,36,48,60,72,84)中二分查找关键字7215、已知一个无向图的顶点集为{a, b, c, d, e} ,其邻接矩阵如下所示0100110010000110110110110⎡⎣⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥(1)画出该图的图形;略 (2)根据邻接矩阵从顶点a 出发进行深度优先遍历和广度优先遍历,写出相应的遍历序列。
DFS: a b d c e BFS: a b e d c16、设数据结构A=(D ,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A 是( )。
(A) 线性结构 (B) 树型结构 (C) 图型结构 (D) 集合17、设指针变量p 指向单链表结点A ,则删除结点A 的后继结点B 需要的操作为( )。
(A) p->next=p->next->next (B) p=p->next (C) p=p->next->next (D) p->next=p18、设栈S 和队列Q 的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S ,一个元素出栈后即进入队列Q ,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S 的容量至少应该是( 3 )。
19、将10阶对称矩阵压缩存储到一维数组A 中,则数组A 的长度最少为( )。
(A) 100 (B) 40 (C) 55 (D) 8020、 设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F 和R ,其中队头指针F 指向当前队头元素的前一个位置,队尾指针R 指向当前队尾元素所在的位置,则出队列的语句为 F =_(F+1)%m__________;。
21、 设无向图G 中有n 个顶点和e 条边,则其对应的邻接表中有____n____个表头结点和___2e______个表结点。
22、 设一个连通图G 中有n 个顶点e 条边,则其最小生成树上有____n-1____条边。
23、设哈夫曼树中的叶子结点总数为m ,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。
(A) 2m-1 (B) 2m (C) 2m+1 (D) 4m24、设某有向图中有n 个顶点,则该有向图对应的邻接表中有(n )个表头结点。
25、 为了能有效地应用HASH 查找技术,必须解决的两个问题是__哈希函数的构造__________________和____解决冲突的方法______________________。
26、设某无向图G 的邻接表为31241314234321>->->->->->->->->->-v v v v ,则从顶点V 1开始的深度优先遍历序列为__V1V3 V4 V2_________;广度优先遍历序列为__V1 V3 V2 V4__________。
四、运算应用题2、简单(直接)选择排序是一种稳定的排序方法吗?试举例说明? 答案:是不稳定的排序方法。
下面就是不稳定的例子。
只要能举出反例即可。
{ 275 275* 512 061 } i = 1 { 061 275* 512 275 } i = 2{061 275* 512 275 }i = 3{061 275* 275 512 }4、设有序顺序表为{ 10, 20, 30, 40, 50, 60, 70 },采用折半搜索时,搜索成功的平均搜索长度是多少?答案:ASL= (1*1 + 2*2 + 3*4 ) / 7 = 17 / 7succ5、在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?答案:结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。
8、画出下列广义表的图形表示和它们的存储表示:(1) D(A(c), B(e), C(a, L(b, c, d)))(2) J1(J2(J1, a, J3(J1)), J3(J1))答案:广义表(1)的图形表示为:广义表(2广义表(1)的存储表示为:广义表(2)的存储表示为:9、题目:11、将下面的森林变换成二叉树(7分)。
答案:10、将算术表达式 ((a+b)+c*(d+e)+f)*(g+h) 转化为二叉树。
(7分) 答案:11、根据所给有向图,写出一个拓扑序列。
(5分)答案:其中的一个拓扑序列为:V1,V2,V3,V4,V5,V6,V7 12、 将给定的图简化为最小的生成树,要求从顶点1出发。
(7分)答案:18、试对下图所示的AOE 网络(1) 这个工程最早可能在什么时间结束。
(2) 求每个事件的最早开始时间Ve[i]和最迟开始时间Vl[i]。
(3) 求每个活动的最早开始时间e ( )和最迟开始时间l ( )。
(4) 确定哪些活动是关键活动。
画出由所有关键活动构成的图,指出哪些活动加速可使整个工程提前完成。
和最迟允许开始时答案:按拓朴有序的顺序计算各个顶点的最早可能开始时间Ve,然后再计算各个活动的最早可能开始时间e和最迟允许开始时间l,根据间Vll-e是否等于0来确定关键活动,从而确定关键路径。
此工程最早完成时间为43,关键路径为<1,3><3,2><2,5><5,6>19、已知有五个待排序的记录,其关键字分别为:256,301,751,129,937,863,742,694,076,438请用快速排序的方法将它们从小到大排列。
答案:第一次排序:(076,129),256,(751,937,863,742,694,301,439)第二次排序:076,129,256,(438,301,694,742),751,(863,937)第三次排序:076,129,256,301,438,(694,742),751,(863,937)第四次排序:076,129,256,301,438,694,742,751,(863,937)第五次排序:076,129,256,301,438,694,742,751,863,937五、算法分析题1、给出下列递归过程的执行结果void unknown ( int w ) {if ( w ) {unknown ( w-1 );f or ( int i = 1; i <= w; i++ ) cout << w<<' ';cout << endl;}}调用语句为unknown (4)。
答案:(1) 12 23 3 34 4 4 42、给出递归过程的执行结果void unknown ( int n ) {cout << n % 10 ;if ( int ( n / 10 ) ) unknown ( int ( n/ 10 ) );}调用语句为unknown ( 582 )。
答案:2853、给出递归过程的执行结果int unknown ( int m ) {int value;if ( ! m ) value = 3;else value = unknown ( m-1 ) + 5;return value;}执行语句为cout <<unknown (3)。
答案:184、设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676,每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)(10)表示用10进制表示。