(完整word版)12年南大金陵学院数据结构期末考试

合集下载

12年南大金陵学院数据结构期末考试

12年南大金陵学院数据结构期末考试

南京大学金陵学院期末试卷2011~2012学年第一学期数据结构期末考试试题 A 09 1. 2 学号__________ 姓名_____________ 成绩___________一选择题(共15 题,每题2分,计30 分)在下列各题A)、B)、C)、D) 四个选项中,选择一个正确的选项,将其字母编号填写在括号中。

(1)下列哪个选项是错误的?()A) 2n+n3 = O(2n) B) 2n+1 = O(2n)C) 22n = O(2n) D) O(n2) < O(2n)(2) 在下列4个选项中,声明一个向量数组的是( )A) vector<char> vex ; B) vector<char> vec(10) ;C) vector<cha> vex[10] ; D) vector<char > vex(10, 'a' );(3) 下列每组代码利用标准容器list建立一个表,然后逐个删除表中的元素。

其中那组代码是正确的?( )A)list<int> lst; B) list<int> lst;for( int i = 0;i<5;i++) lst.push_back(i); for( int i = 0;i<5;i++) lst.push_back(i);list<int>::iterator p; list<int>::iterator p=lst.begin();for( p=lst.begin() ; p!=lst.end() ; p++) lst.erase(p); while( !lst.empty() ) lst.erase(p);C) list<int> lst; D) list<int> lst;for( int i = 0;i<5;i++) lst.push_back(i); for( int i = 0;i<5;i++) lst.push_back(i);list<int>::iterator p=lst.begin(); list<int>::iterator p=lst.begin();while(p!=lst.end() ) lst.erase(p); while(p!=lst.end() ) p=lst.erase(p);(4) 字符a、b、c、d依次进入一个栈,按所有可能的次序出栈后组成一个长度是4的字符串,至多可以组成多少个不同的字符串?()A) 4 B) 14 C) 24 D) 16(5)设有如下定义的数组Q:const int m=20 ;T Q[m];//T为队列元素的类型Q存储一个环形队列。

数据结构期末考试试卷及答案

数据结构期末考试试卷及答案

数据结构期末考试试卷及答案一、选择题(每题2分,共20分)1. 下面哪一项不是数据结构的基本类型?()A. 线性结构B. 树形结构C. 集合结构D. 图形结构答案:C2. 在链表中,存储元素的数据域称为(),存储下一个元素地址的域称为()。

A. 节点,指针B. 指针,节点C. 数据域,指针域D. 指针域,数据域答案:C3. 下面哪种排序算法的平均时间复杂度最高?()A. 冒泡排序B. 快速排序C. 堆排序答案:A4. 在二叉树中,具有n个节点的完全二叉树的深度至少是()A. log2nB. log2(n+1)C. log2n+1D. log2(n-1)答案:C5. 下面哪种树的节点中不包含任何关键字?()A. 二叉搜索树B. 哈希树C. 平衡二叉树D. B树答案:B6. 下面哪个算法不是用来解决排序问题的?()A. 快速排序B. 冒泡排序C. 二分查找答案:C7. 下面哪种数据结构的存储方式不是顺序存储?()A. 线性表B. 栈C. 队列D. 树答案:D8. 下面哪种算法的时间复杂度是O(nlogn)?()A. 冒泡排序B. 快速排序C. 插入排序D. 选择排序答案:B9. 下面哪个算法不是用来解决查找问题的?()A. 二分查找B. 顺序查找C. 快速排序D. 哈希查找答案:C10. 下面哪个算法不是用来解决图论问题的?()A. 深度优先搜索B. 广度优先搜索C. 最短路径算法D. 快速排序答案:D二、填空题(每题2分,共20分)11. 在线性表中,插入和删除操作的时间复杂度是______。

答案:O(n)12. 在链表中,插入和删除操作的时间复杂度是______。

答案:O(1)13. 快速排序的平均时间复杂度是______。

答案:O(nlogn)14. 堆排序的平均时间复杂度是______。

答案:O(nlogn)15. 二分查找的时间复杂度是______。

答案:O(logn)16. 在二叉树中,度为0的节点数等于度为2的节点数加______。

南大金陵嵌入式13级期末试卷B卷.doc

南大金陵嵌入式13级期末试卷B卷.doc

南京大学金陵学院期末试卷(B 卷)2012~2013学年度第一学期一、判断题(共10题,每题1分,计10分〉1设计SoC 相当于设计一个嵌入式计算机系统,是嵌入式系统开发的核心所在。

T2. 应用程序可以直接在MAND Flash 闪存内运行,F3. 嵌入式操作系统大多采用抢占式调度内核T4. 嵌入式系统的操作系统和应用程序是一体化集成在一起的,其结构不易用层次结构来 表达。

F5. 嵌入式系统的RT0S 要求操作系统比应用软件具有更高的可靠性T6. 硬实时应用对实时能力有严格的要求,响应时间在毫秒或秒级.F7. 20世纪90年代,现代操作系统的设计思想开始渗入RT0S 领域。

此间,风河推出了 Vxworko 并组成自己完整的开发环境。

T8. 嵌入式系统已进入32位处理器时代,软件开发规模迅速增大,嵌入式软件规模已达到 数百万行至数千万行的规模。

F9. 对安装有多核处理器的目标板调试,目前还不能用JTAG-1CE 进行。

F10. 指令集模拟器即是一种CPU 仿真,可方便用户在PC 机上完成绝大部分软件的调试工 作.F二、选择题(共25题,每题2分,计50分》1. 一款采用ARM V7结构,具备高可靠性,强实时处理能力的ARM 内核应是 ______A ARM11 系列B. Cortex M 系列C. Cortex A 系列D. Cortex R 系列2. 实际的嵌入式系统对实时性的要求各不相同,其中 _______ 属软实时应用:A. 机器人B.打印jLC. 汽车杀ij 车控芾ijD. 电梯3. IP 集成复用技术是建立在芯核(CORE )基础上的,所谓固核是指 ________ .A. 是一种可综合的色含具体结构信息的代码,是逻辑综合后的描述,B. 以硬件描述语言描述的代码,可根据具体的半导体工艺重新综合C. 经物理综合后的可直接用于制作的描述D. 1P 核代码以固件形式置于ROM 中4. 当前,嵌入式系统软件开发的变化很大,但 ____ 并非正确的描述.A. 硬件接口的复杂化、多样化、网络化B. 开发用主机必需与网络连结C. 引入实时多任务操作系统D. 硬件设计开发的同时,需要同时进行应用软件包的开发5. 提高系统实时性能有多种方式,以下方式中 _______ 是错误的A. 尽量釆用软件处理课程名称:嵌入式系统原理与应用 专业: _______________ 学号:_ 教师姓名黄强 .姓名: _试卷类型匕迁 总分: ________B.采用高实时处理性能的微处理器C.采用棊于实时操作系统的多线程程序D.采用并行处理机制6.使用系统级语言可对系统参数、软硬件分割、系统预期性能进行仿真评价, _____ 不属于系统级设计语言.A.SystemVerilog。

数据结构期末考试卷试题包括答案

数据结构期末考试卷试题包括答案

2012 年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上能够把数据结构分为C。

A.动向结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外面结构2.数据结构在计算机内存中的表示是指A。

A .数据的储存结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机没关的是数据的A结构。

A.逻辑B.储存C.逻辑和储存D.物理4.在储存数据时,往常不单要储存各数据元素的值,并且还要储存C。

A.数据的办理方法B.数据元素的种类C.数据元素之间的关系D.数据的储存方法5.在决定选用何种储存结构时,一般不考虑A。

A.各结点的值怎样B.结点个数的多少C.对数占有哪些运算D.所用的编程语言实现这类结构能否方便。

6.以下说法正确的选项是D。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的会合D.一些表面上很不同样的数据能够有同样的逻辑结构7.算法剖析的目的是C,算法剖析的两个主要方面是A。

(1)A .找出数据结构的合理性B.研究算法中的输入和输出的关系C.剖析算法的效率以求改良C.剖析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简洁性C.可读性和文档性D.数据复杂性和程序复杂性8.下边程序段的时间复杂度是O(n2)。

s=0;for( I = 0; i < n; i++)for( j=0;j <n;j++)s += B[i][j] ;sum = s ;9.下边程序段的时间复杂度是O(n*m )。

for( i = 0; i <n; i++)for( j=0;j <m;j ++)A[i][j] = 0;10.下边程序段的时间复杂度是O(log3n)。

i = 0;while(i <= n)i = i * 3 ;11.在以下的表达中,正确的选项是B。

A.线性表的次序储存结构优于链表储存结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.行列的操作方式是先进后出12.往常要求同一逻辑结构中的全部数据元素拥有同样的特征,这意味着B。

(完整word版)数据结构试卷及答案(word文档良心出品)

(完整word版)数据结构试卷及答案(word文档良心出品)

注意事项:1、下面关于串的叙述中,哪一个是不正确的?( )A .串是字符的有限序列B .空串是由空格构成的串C .模式匹配是串的一种重要运算D .串既可以采用顺序存储,也可以采用链式存储 2、设无向图的顶点个数为n ,则该图最多有( )条边。

A .n-1B .n(n-1)/2C . n(n+1)/2D .0 3、以下数据结构中,( )是非线性数据结构。

A .树B .字符串C .队列D .栈 4、下面关于线性表的叙述中,错误的是哪一个?( )A .线性表采用顺序存储,必须占用一片连续的存储单元。

B .线性表采用顺序存储,便于进行插入和删除操作。

C .线性表采用链接存储,不必占用一片连续的存储单元。

D .线性表采用链接存储,便于插入和删除操作。

5、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front 和rear ,则当前队列中的元素个数为( )。

A .(rear-front+m)%mB .rear-front+1C .(front-rear+m)%mD .(rear-front)%m6、在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是( )。

A .p->next=s; s->next=p->next;B .s->next=p->next; p->next=s;C .p->next=s; p->next=s->next;D .p->next=s->next; p->next=s; 7、设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。

A .1,2,4,3B .2,1,3,4C .1,4,3,2D .4,3,1,2, 8、广义表(a,(b,c),d,e )的表头和表尾分别为( )。

A .a 和(b,c),d,e B .(a )和(b,c),d,eC .a 和 ((b,c),d,e)D .(a) 和((b,c),d,e)9、栈和队都是( )A .顺序存储的线性结构B .链式存储的非线性结构C .限制存取点的线性结构D .限制存取点的非线性结构 10、从逻辑上可以把数据结构分为( )两大类。

数据结构考试题目及答案pdf

数据结构考试题目及答案pdf

数据结构考试题目及答案pdf一、单项选择题(每题2分,共10分)1. 在数据结构中,线性结构和非线性结构的主要区别在于()。

A. 数据元素之间是否有逻辑关系B. 是否有且仅有一个根节点C. 是否有多个根节点D. 数据元素之间是否有顺序关系答案:A2. 链表中每个节点包含数据元素和()。

A. 一个指针B. 多个指针C. 一个数据域D. 一个数据域和一个指针答案:D3. 在二叉树的遍历中,先序遍历的顺序是()。

A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表解决冲突的方法不包括()。

A. 开放寻址法B. 链地址法C. 线性探测法D. 二分查找法答案:D5. 堆是一种特殊的完全二叉树,其特点是()。

A. 每个节点的值都大于其子节点的值B. 每个节点的值都小于其子节点的值C. 每个节点的值都大于或等于其子节点的值D. 每个节点的值都小于或等于其子节点的值答案:C二、填空题(每题2分,共10分)1. 在顺序表中,插入一个元素的平均时间复杂度为 O(n) 。

2. 栈是一种特殊的线性表,其特点是后进先出(LIFO),即后进的元素先出栈。

3. 快速排序的时间复杂度在最坏情况下为 O(n^2) 。

4. 广义表的表示形式为 (a, b, c) ,其中a、b、c可以是数据元素或子表。

5. 在图的遍历中,深度优先搜索(DFS)使用的是栈数据结构。

三、简答题(每题10分,共20分)1. 请简述二叉搜索树和平衡二叉树的区别。

答:二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。

平衡二叉树除了满足二叉搜索树的性质外,还要求每个节点的左子树和右子树的高度差不超过1,以保持树的平衡,从而提高查找效率。

2. 什么是图的连通分量?请举例说明。

答:图的连通分量是指图中的最大的连通子图。

如果一个图不是连通的,那么它将被划分为若干个连通分量,每个连通分量内部的顶点都是相互连通的,但不同分量之间没有直接的边相连。

南京大学《数据结构》期末试卷(含答案)

南京大学《数据结构》期末试卷(含答案)

考试科目名称 数据结构〔A1 卷〕1、填空题。

〔每题 2 分,此题总分值 20 分〕 (1) C++语言中,数组是按行优先顺序存储的,假设定义了一个二维数组 A[20][30],每个元素占两个字节,其起始地址为 2140,那么二维数组 A 的最后一个数据元素的地址为 2140+2*(30*20-1) = 3338(3338,3339) 。

(2) 假设 A ,B 是两个单链表,链表长度分别为 n 和 m ,其元素值递增有序,将 A 和 B 归并成一个按元素值递增有序的单链表,并要求辅助空间为 O(1),那么实现该功能的算法的时间复杂度为 O(m+n)。

(3) 快速排序的平均时间复杂度是n*lg n。

(4) 假设有一个包含 9 个元素的最小堆,存放在数组 A 中,那么一定比 A[3]大的元素有__2 (A[7],A[8]) 个;一定比 A[3]小的元素有 2 (A[0],A[1])个。

〔元素从第 0 个位置开始存放〕(5) 广义表(((A)),(B,C), D, ((A), ((E,F)))) 的长度是4,深度是 4。

(6) 有 10 个元素的有序表,采用折半查找,需要比拟 4 次才可找到的元素个数为3。

(7〕当两个栈共享一存储区时,栈利用一维数组 A[n]表示,两栈顶指针为 top[0]与 top[1],那么栈满时的判断条件为top[0]+1=top[1]_ 或者 top[0] = top[1]+1。

(8) 假设计算斐波那契数的函数 Fib(long n)定义如下:long Fib(long n){if(n<=1) return n;else return Fib(n-1)+Fib(n-2)}计算 Fib(5)时的递归调用树〔即指明函数调用关系的树〕的高度是 4 子结点所在的高度为 0。

假设叶(9)(10) 假设用子女—兄弟链表方式表示森林,对应的二叉树的根结点是 p ,那么森林的第三棵树的根结点在二叉树中对应的结点是: p->rightchild->rightchild。

数据结构期末考试试题(含答案)

数据结构期末考试试题(含答案)

数据结构期末考试试题(含答案)题目一请写出快速排序算法的递归实现。

解答一public class QuickSort {public void sort(int[] arr, int low, int high) {if (low < high) {int partitionIndex = partition(arr, low, high);sort(arr, low, partitionIndex - 1);sort(arr, partitionIndex + 1, high);}}private int partition(int[] arr, int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;swap(arr, i, j);}}swap(arr, i + 1, high);return i + 1;}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}题目二请解释什么是二叉搜索树,并给出一个例子。

解答二二叉搜索树是一种有序的二叉树,其中每个节点的值大于其左子树的所有节点的值,小于其右子树的所有节点的值。

下面是一个二叉搜索树的例子:6/ \3 9/ \ \1 4 12题目三请写出深度优先搜索(DFS)算法的递归实现。

解答三import java.util.*;public class DFS {private int numVertices;private List<List<Integer>> adjList;public DFS(int numVertices) {this.numVertices = numVertices;adjList = new ArrayList<>();for (int i = 0; i < numVertices; i++) {adjList.add(new ArrayList<>());}}public void addEdge(int src, int dest) { adjList.get(src).add(dest);}public void DFSUtil(int start, boolean[] visited) { visited[start] = true;System.out.print(start + " ");List<Integer> neighbors = adjList.get(start);for (int neighbor : neighbors) {if (!visited[neighbor]) {DFSUtil(neighbor, visited);}}}public void DFS(int start) {boolean[] visited = new boolean[numVertices];DFSUtil(start, visited);}}以上是数据结构期末考试试题及其答案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京大学金陵学院期末试卷2011~2012学年第一学期数据结构期末考试试题 A 09 1. 2 学号__________ 姓名_____________ 成绩___________一选择题(共15 题,每题2分,计30 分)在下列各题A)、B)、C)、D) 四个选项中,选择一个正确的选项,将其字母编号填写在括号中。

(1)下列哪个选项是错误的?()A) 2n+n3 = O(2n) B) 2n+1 = O(2n)C) 22n = O(2n) D) O(n2) < O(2n)(2) 在下列4个选项中,声明一个向量数组的是( )A) vector<char> vex ; B) vector<char> vec(10) ;C) vector<cha> vex[10] ; D) vector<char > vex(10, 'a' );(3) 下列每组代码利用标准容器list建立一个表,然后逐个删除表中的元素。

其中那组代码是正确的?( )A)list<int> lst; B) list<int> lst;for( int i = 0;i<5;i++) lst.push_back(i); for( int i = 0;i<5;i++) lst.push_back(i);list<int>::iterator p; list<int>::iterator p=lst.begin();for( p=lst.begin() ; p!=lst.end() ; p++) lst.erase(p); while( !lst.empty() ) lst.erase(p);C) list<int> lst; D) list<int> lst;for( int i = 0;i<5;i++) lst.push_back(i); for( int i = 0;i<5;i++) lst.push_back(i);list<int>::iterator p=lst.begin(); list<int>::iterator p=lst.begin();while(p!=lst.end() ) lst.erase(p); while(p!=lst.end() ) p=lst.erase(p);(4) 字符a、b、c、d依次进入一个栈,按所有可能的次序出栈后组成一个长度是4的字符串,至多可以组成多少个不同的字符串?()A) 4 B) 14 C) 24 D) 16(5)设有如下定义的数组Q:const int m=20 ;T Q[m];//T为队列元素的类型Q存储一个环形队列。

quelen是队列中元素的个数,back 是实际队尾元素的位置,队列中第一个元素的实际位置是( )A) back+m-quelen B) back – quelenC) ( back+m – quelen +1) % m D) ( m – back +quelen) % m(6) C++标准模板库的“表”容器(list)是用双向链表实现的,对这种实现,下列叙述正确的是( )A) 元素的物理顺序与元素的逻辑顺序一定相同B) 一个表元素所占用的存储空间只用来存储表元素的值,不含其他附加信息C) 可以随机地访问元素D) 可以高效地进行插入和删除操作(7) 设一个长度为10的排好序的序列存储在数组int arr[10]中。

对一个给定的值k,用二分法查找与k相等的元素,若查找不成功,至少需要比较多少次?( )。

A) 3B) 4 C) 5D) 6(8) 设一棵树的度是4,其中度为0、1、2、3和4的结点个数分别是8、4、2、1和x,x是( ) 。

A) 4 B) 3 C) 2 D) 1(9) 下面关于二叉树的叙述正确的是( )。

A) 任何二叉树至少有一个结点B) 二叉树的度是2C) 在二叉树中,度为0的结点个数等于度为2的结点个数加1。

D) 在任何一棵完全二叉树中,没有度为1的结点。

(10) 一棵二叉树含有25个结点,这些结点要么是叶,要么是有两棵非空子的子树,此二叉树中有()个非叶结点。

A) 11 B) 12 C) 13 D) 14(11) 设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树分别有f个结点和c个结点,下列关系式错误的是()A) f ≥c B) c > f C) f = 2k+1-1 D) c ≤2k+1-1(12) 下列关于二叉搜索树的叙述,错误的是()。

A) 二叉搜索树可以是空二叉树B) 向二叉搜索树中插入一个结点,该结点的度一定是0。

C) 对二叉搜索树进行中序遍历,将得到结点键值的递增序列。

D) 向二叉搜索树中插入一个结点,树的高度一定增加1。

(13) 考虑一棵二叉树结点的先序、中序和后序序列,所有叶结点的先后顺序关系是( )A) 都不相同B) 完全相同C) 先序和中序相同,而与后序不同D) 中序和后序相同,而与先序不同(14) 设有森林F,与F对应的二叉树是B。

若已知F有m个非叶结点,B中有n个结点的右子树是空二叉树,对m和n,下列等式成立的是()A) m = n B) m = n - 1 C) m = n + 1 D) m =n - 2(15)考虑下列4种排序方法,不稳定的方法是()A) 直接插入排序B) 二分法插入排序C) 归并排序D) 快速排序二、填空题(共10 题,每题3分,计30 分)请将下列各题的答案填写在横线上(1)一个抽象数据类型由一组值的集合以及定义在这组值上的一组组成。

(2) 利用STL的向量容器vector定义二维向量vv如下:vector< vector<int> > vv ; // 二维向量vv执行循环语句:for ( int i = 1 ; i<=3 ; i++ ) vv.push_back( vector<int> (i , 2*i ) ) ;后,向量vv的元素vv[1]是_______________________(3) 对下列函数mystery ( int n ),参数n是2的正整数幂(n=2k , k=1 ,2 , 3 ,…),用参数n表示函数执行结束时的count 值:count=___________________________。

int mystery ( int n){int x = 2 , count = 0 ;while ( x < n ){x *= 2 ;count ++ ;}return count ;}(4) 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后立即进入队列,若6个元素出队列顺序是e2,e5,e6,e4,e3,e1,在操作过程中,栈S的最大长度(size)是多少? ______________(5) 可以高效地在两端进行插入和删除操作的队列称为_____________队列。

(6) 广义表D=( (),(e),( a,(b,c,d) ) ),则:D的长度是_________, D的表头Head(D)是________ ,D的表尾Tail(D)是_______________(7) 设森林F有3棵树,第一、第二和第三棵树的结点个数分别是t1、t2和t3,与森林对应的二叉树根结点的左子树有___________ 个结点。

(8) 在一棵中序线索树中,一个结点p有两棵非空的子树,它的中序前驱结点的度至多是____________。

(9) 在n个结点的完全二叉树中,叶结点的个数是。

(10)对一棵二叉树进行先序和中序遍历的结果分别是先序序列: A D B G E F C中序序列: B G D A F E C则这棵二叉树根结点的左子女和右子女分别是_________和___________ 。

三、解答题(共 5 题,每题5分,计25 分)请按照题意解答下列各题。

(1) 函数func()对表alist进行什么操作?template<typename T>void func( list<T>& alist ){list<T>:: iterator iter = alist.begin() ;while ( iter != alist.end() ){alist.push_front( * iter ) ;alist.erase ( iter++) ; // 本句也可改用p=alist.erase(iter);}}(2) 设整型数组arr[]的长度为n,元素已按值递增的顺序排好序,函数Bsearch ()在数组中查找与给定值target相等的元素,若查找成功,返回元素在数组中的位置,否则返回-1。

实现代码如下:int Bsearch (int const *arr , int n , const int& target ){bool found = false ;int first = 0, last = n-1, m ;while ( first <= last && !found ){m = ( first + last ) / 2 ; // 二等分int mid = arr[m] ;if ( target == mid ) found = true ;elseif ( target > mid ) first = m ;else last = m ;}if ( found ) return m ; // 查找成功,返回元素在数组中的位置else return -1 ; // 查找失败,返回-1}无任是查找成功或查找失败,函数是否总能正确地工作?如果不能,请举例说明。

(3)删除一棵二叉搜索树中的一个结点,然后再插入这个结点,所得的结果二叉树是否与原先的二叉树一定相同?举例说明你的结论。

(4) 设被排序的初始序列为{ 26, 28, 41, 57, 14, 10, 35, 22 },用快速排序方法进行排序,以第一个元素26作为划分的基准,写成第一次划分后所得到的两个序列。

//本题不宜作为考题,因为划分的具体算法不同会得到不同结果。

(5) 假设一则电文中仅出现6个不同的字母a,b,c,d,e和f,每个字母在电文中出现的频率分别是3,10,12,7,4和20。

试为这6个字母设计哈夫曼编码。

四.编程题( 共2题,第(1)题5 分,第(2)题10 分,计15 分)(1)对下列单链表写一个递归函数,反向输出单链表中的结点,即依次输出a n ,a n-1,……,a 2,a 1 单链表的结点类型定义如下: struct node {int data ; node* next ; };函数的原型: void Print( Node* head); // 函数写在下面(2) 若序列 { h 0, h 1, h 2,...... , h n-1 } 中的元素满足下列关系:h i ≥ h 2i+1 并且 h i ≥ h 2i+2 ( i = 0, 1 , 2 , .... , ⎥⎦⎥⎢⎣⎢-22n ) 则该序列是一个堆(heap)。

相关文档
最新文档