数据结构期末试题提纲

合集下载

数据结构期末考试复习总结,DOC

数据结构期末考试复习总结,DOC

《数据结构》期末考试题型及分值(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 ,试写出该线性表。

A01234567dat a 60 50 78 90 34 40nex t3 5 7 2 04 1线性表为:(78,50,40,60,34,90)⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0111010111101110101011102. 请画出下图的邻接矩阵和邻接表。

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)20 4.画出向小根堆中加入数据4,2,5,8,3时,每加入一个数据后堆的变化。

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

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

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述1. 数据结构的定义和作用2. 常见的数据结构类型3. 数据结构与算法的关系二、线性结构1. 数组的概念及其特点2. 链表的概念及其分类3. 栈的定义和基本操作4. 队列的定义和基本操作三、树结构1. 树的基本概念及定义2. 二叉树的性质和遍历方式3. 平衡二叉树的概念及应用4. 堆的定义和基本操作四、图结构1. 图的基本概念及表示方法2. 图的遍历算法:深度优先搜索和广度优先搜索3. 最短路径算法及其应用4. 最小生成树算法及其应用五、查找与排序1. 查找算法的分类及其特点2. 顺序查找和二分查找算法3. 哈希查找算法及其应用4. 常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、快速排序六、高级数据结构1. 图的高级算法:拓扑排序和关键路径2. 并查集的定义和操作3. 线段树的概念及其应用4. Trie树的概念及其应用七、应用案例1. 使用数据结构解决实际问题的案例介绍2. 如何选择适合的数据结构和算法八、复杂度分析1. 时间复杂度和空间复杂度的定义2. 如何进行复杂度分析3. 常见算法的复杂度比较九、常见问题及解决方法1. 数据结构相关的常见问题解答2. 如何优化算法的性能十、总结与展望1. 数据结构学习的重要性和难点2. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。

希望能够帮助你进行复习和回顾,加深对数据结构的理解和掌握。

在学习过程中,要注重理论与实践相结合,多进行编程练习和实际应用,提高数据结构的实际运用能力。

祝你复习顺利,取得好成绩!。

数据结构考试题纲

数据结构考试题纲

考试题型选择题:21分填空题:18分判断题:15分简答题:26分算法题:20分什么是数据元素?组成数据的成分数据什么是数据项?什么是数据结构?是由数据元素依据某种逻辑联系组织起来的严格地说,数据元素与结点是一回事吗?no什么是算法的时间复杂度?程序运行从开始到结束所需要的时间什么是大O表示法?使用大O记号表示的算法的时间复杂度,称为算法的渐近时间复杂度。

什么是顺序存储结构?什么是链式存储结构?什么是顺序表?在顺序表上进行插入和删除操作的算法复杂度是多少?O(n)哪些算法的实施只能在顺序表上进行?什么是栈和队列?堆栈(栈):限定插入和删除操作都在表同一端进行的线性表队列:限定在表的一端插入,在表的另一端删除的线性表怎样实现链式栈和链式队列?怎样判断一个出栈序列是否合法?因为对于出栈序列中的每一个数字,在它后面的、比它小的所有数字,一定是按递减顺序排列的怎样将中缀表达式转换成后缀表达式?(1)从左到右扫描中缀表达式,遇到#转(6);(2)遇到操作数直接输出;(不进栈)(3)遇到“)”,则连续出栈输出,直到遇到“(”为止(“(”出栈但不输出);否则(4)若是其它操作符,则与栈顶的操作符比较优先级;若优先级小于栈顶的优先级,则连续出栈输出,直到大于等于结束,操作符进栈;(5)转(1);(6)输出栈中剩余操作符(#除外)。

什么是循环链表?循环链表是另一种形式的链式存贮结构。

它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。

什么是循环队列?克服"假溢出"现象将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。

存储在其中的队列称为循环队列循环队列为空或满的条件是什么?当front==rear 时为空队列,当(rear+1) % MaxSize ==front 时为满队列满队列时实际仍有一个元素的空间未使用什么是单链表?每个节点都有一个指针域的链表叫单链表什么是带表头结点的单链表?链表的前面有个空表头为什么要引入表头结点?方便在表的最前面进行插入和删除什么是满二叉树?高度为h的二叉树恰好有2h –1个结点什么是完全二叉树?一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上。

数据结构复习提纲

数据结构复习提纲

数据结构复习提纲一、线性表线性表是最基本的数据结构之一,它是具有相同数据类型的 n 个数据元素的有限序列。

1、顺序表定义和特点:顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。

存储结构:通常使用数组来实现。

基本操作:插入、删除、查找、遍历等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(n),查找和遍历操作的时间复杂度为 O(n)。

2、链表定义和特点:链表是通过指针将各个数据元素链接起来的一种存储结构。

单链表:每个节点包含数据域和指针域,指针域指向链表的下一个节点。

双链表:节点包含两个指针域,分别指向前驱节点和后继节点。

循环链表:尾节点的指针指向头节点,形成一个环形结构。

基本操作:插入、删除、查找等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(1),查找操作的时间复杂度为 O(n)。

二、栈和队列1、栈定义和特点:栈是一种限制在一端进行插入和删除操作的线性表,遵循“后进先出”的原则。

存储结构:顺序栈和链栈。

基本操作:入栈、出栈、栈顶元素获取等。

应用:表达式求值、括号匹配、函数调用等。

2、队列定义和特点:队列是一种在一端进行插入操作,在另一端进行删除操作的线性表,遵循“先进先出”的原则。

存储结构:顺序队列和链队列。

基本操作:入队、出队、队头元素获取等。

循环队列:解决顺序队列“假溢出”问题。

应用:层次遍历、消息队列等。

三、串1、串的定义和存储方式定长顺序存储堆分配存储块链存储2、串的基本操作串的赋值、连接、比较、求子串等。

3、模式匹配算法朴素的模式匹配算法KMP 算法:理解其原理和计算 next 数组的方法。

四、数组和广义表1、数组数组的定义和存储结构数组的地址计算特殊矩阵的压缩存储(如对称矩阵、三角矩阵、稀疏矩阵)2、广义表广义表的定义和表示广义表的递归算法1、树的基本概念定义、术语(如节点、度、叶子节点、分支节点、父节点、子节点、兄弟节点、层次等)树的性质2、二叉树定义和特点二叉树的性质完全二叉树和满二叉树3、二叉树的存储结构顺序存储链式存储4、二叉树的遍历先序遍历中序遍历后序遍历层序遍历5、二叉树的递归和非递归遍历算法实现线索化的目的和方法7、树、森林与二叉树的转换8、哈夫曼树定义和构造方法哈夫曼编码六、图1、图的基本概念定义、术语(如顶点、边、权、有向图、无向图、邻接矩阵、邻接表等)2、图的存储结构邻接矩阵邻接表十字链表邻接多重表3、图的遍历深度优先搜索(DFS)广度优先搜索(BFS)4、图的应用最小生成树(Prim 算法、Kruskal 算法)最短路径(Dijkstra 算法、Floyd 算法)拓扑排序关键路径七、查找1、查找的基本概念关键字、平均查找长度等2、顺序查找算法实现时间复杂度3、折半查找算法实现时间复杂度判定树4、分块查找5、二叉排序树定义和特点插入、删除操作查找算法6、平衡二叉树定义和调整方法7、 B 树和 B+树结构特点基本操作8、哈希表哈希函数的构造方法处理冲突的方法(开放定址法、链地址法等)八、排序1、排序的基本概念排序的稳定性2、插入排序直接插入排序折半插入排序希尔排序3、交换排序冒泡排序快速排序4、选择排序简单选择排序堆排序5、归并排序6、基数排序7、各种排序算法的时间复杂度、空间复杂度和稳定性比较。

数据结构复习提纲(整理)

数据结构复习提纲(整理)

复习提纲第一章数据结构概述基本概念与术语(P3)1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的基本单位3.数据对象相同性质的数据元素的集合4.数据结构包括三方面内容:数据的逻辑结构.数据的存储结构.数据的操作. (1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据结构、二元组2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。

3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,x;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1x+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表结构由n(n>=0)个具有相同性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表结构#define MAXSIZE 100typedef int DataType;Typedef struct{DataType items[MAXSIZE];Int length;}Sqlist,*LinkList;//初始化链表void InitList(LinkList *L){(*L)=(LinkList)malloc(sizeof(LNode));if(!L){cout<<”初始化失败!”;return;}(*L)->next=NULL;}//插入数据void InsertList(LinkList L,int pos,DataType x){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”插入位置错误”;return;}InitList(&q);q->next=p->next;p->next=q;q->data=x;}//销毁链表void DestoryList(LinkList L){LinkList t;while(L){t=L;L=L->next;free(t);}}//遍历链表void TraverseList(LinkList L){LinkList t=L;while(L){t=t->next;cout<<t->data<<” ”;}cout<<endl;}//删除元素void DeleteList(LinkList L,int pos){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”删除位置错误!!”;return;}q=p->next;p->next=q->next;free(q):}第三章栈和队列1.栈(1)栈的结构与定义(2)顺序栈操作算法:入栈、出栈、判断栈空等(3)链栈的结构与定义2.队列(1)队列的定义----------------------------------------------------------------------------------------------------------------1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A. BCDAEB. EDACBC. BCADED. AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A. TOP==STACKSIZEB. TOP==1C. TOP==0D. TOP==-13、允许在一端插入,在另一端删除的线性表称为____队列____。

数据结构期末考试重点复习资料

数据结构期末考试重点复习资料

期末考试重点复习资料二、考试重点内容第一章绪论1、时间复杂度和空间复杂度的计算。

要求能够计算出程序的执行次数。

2、各种概念:数据结构、数据项、数据元素第二章线性表1、单链表的各种操作,包括单链表的建立、插入、删除结点的操作语句序列2、单链表(带头结点、不带头结点、循环单链表)的逆置运算。

3、双链表的插入和删除操作语句序列。

4、单链表的直接插入排序运算。

5、静态单链表的插入和删除操作。

6、二个有序单链表的合并、一个单链表拆分为多个单链表第三章栈和队列1、栈的输入序列和输出序列、递归函数的输出结果2、循环队列的入队、出队操作以及有效元素个数的计算第四章串1、KMP算法中的next和nextval值的计算第五章数组和广义表1、二维数组任意元素地址的计算2、稀疏矩阵的转置算法3、广义表的两个操作函数:取表头和表尾第六章树和二叉树1、二叉树的性质(特别是完全二叉树的性质,例如求完全二叉树的深度等)2、二叉树的遍历(特别是中序和先序遍历,要求能够使用堆栈完成非递归遍历编程和递归算法编程,在遍历基础上的各种操作,例如求二叉树的叶子数、二叉树结点数等操作,包括有编程算法和编程填空题)3、线索二叉树(特别是中序线索化二叉树和中序线索化二叉树的中序遍历,包括编程算法和编程填空题,希望大家着重研究)4、哈夫曼编码(主要是应用题,包括哈夫曼的编码与解码,也包括哈夫曼树的特点)5、树与森林在转化成二叉树时,左右子树的结点数有何特点)6、树的层次遍历(使用队列完成、借助树的层次遍历可以判断二叉树是否为完全二叉树)、判断二叉树是否为排序二叉树等,可能有编程题或编程填空题)补充:二叉树的物理存储结构(链式和顺序存储)*第七章图1、图的两种物理存储方式(邻接矩阵与邻接表存储表示)2、图的生成树与最小生成树(生成树特点)、图的遍历3、求最小生成树的两种算法(重点是PRIM 算法,特别会写出用PRIM算法求最小生成树的过程)4、使用迪杰斯特拉算法求单源最短路径,写出求解过程5、拓扑排序6、求关键路径,要求写出事件和活动的最早和最晚开始时间,深刻理解关键路径的含义。

数据结构复习提纲

数据结构复习提纲

复 习 题一、填空题若一个算法的时间复杂度用T(n)表示,其中n 的含义是 问题规模二叉树第k 层的最大结点数为 2k-1 . 栈和队列的共同特点是只允许在端点处插入和删除元素。

有128个结点构成的完全二叉树,其深度为 8 。

一个有n 个顶点的无向连通图至少有 n-1 条边。

最多有 n(n-1)/2 条边在二叉排序树中,关键字值最小的结点 左指针一定为空。

在待排序的元素逆序的情况下,直接插入排序的比较次数为 ( n-1)(n+2)/2 次。

正序情况下比较次数为 n-1前序序列和后序序列相同的二叉树为 空或只有根结点的二叉树 。

带头结点的单循环链表head 为空的判定条件是 head->next==head 。

假设以数组S[0..m-1]作为循环队列的存储结构,同时设变量front 和rear 分别指向队头元素的前一个位置和队尾元素位置,则队列中元素个数为 (rear-front+m)%m 。

设数组data[m]作为循环队列SQ 的存储空间,front 为队头指针,rear 为队尾指针,则执行出队操作后其头指针front 值为 front=(front+1)%m一个有n 个顶点的有向图至多有 n(n-1) 条弧。

在二叉排序树中,关键字值最大的结点 右指针一定为空 。

一组记录的排序码为(72,73,71,23,94,5,68),则利用快速排序方法,以第一个记录为基准得到的第一趟排序结果为 (68,5,71,23,72,94,73) 。

在数据结构中,从逻辑上可以把数据结构分成___线性结构和非线性结构_____对线性表进行二分查找时,要求线性表必须_____以顺序方式存储,且结点按关键字有序排序 一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是________108_________一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是__dceab 。

数组A[8][10]中,每个元素A 的长度为3个字节,从首地址SA 开始连续存放在存储器内,该数组按列存放时,元素A[4][7]的起始地址为_____ SA+180___。

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

数据结构期末复习提纲(2012级)A、总体要求:1、掌握数据结构的基本概念、基本原理和基本方法。

2、掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度和空间复杂度的分析。

3、能够运用数据结构的基本原理和方法进行问题的分析与求解,具备采用C语言和C++语言设计与实现算法的能力。

一、基本概念1、数据结构、数据元素、数据项、数据类型、抽象数据类型、算法、算法的时间复杂度、算法的空间复杂度、算法的评价标准。

2、数据结构的逻辑结构和存储结构及分类。

3、线性表的定义及特点。

4、顺序表、单链表、双向链表、循环链表、静态链表的存储结构。

5、栈和队列的定义及特点。

6、顺序栈、链栈、顺序队列、链队列的存储结构。

7、字符串的定义及特点。

8、顺序串和链串的存储结构。

9、数组的定义及特点。

10、数组的按行存储与按列存储。

11、对称矩阵、三角矩阵、稀疏矩阵的压缩存储。

12、二叉树的定义、一般术语及特点。

13、二叉树的五个基本性质。

14、完全二叉树与满二叉树的概念。

15、二叉树的顺序存储结构。

16、二叉树的二叉链表与三叉链表存储结构。

17、二叉树的四种遍历方式及特点。

18、线索二叉树的存储结构及特点。

19、树和森林的概念。

20、树的双亲链表和孩子兄弟链表存储结构。

21、树和森林的二种遍历方式。

22、图的定义、一般术语及特点。

23、图的邻接矩阵、邻接表、逆邻接表存储结构。

24、图的二种遍历方式及特点、优先遍历生成树的概念。

25、图的连通性、连通图、连通分量的概念。

26、有向无环图的概念及特点。

27、查找、查找表、关键字的概念。

28、顺序查找、折半查找、分块索引查找的概念。

29、二叉排序树和平衡二叉树的定义及特点,平衡因子的概念。

30、B_树的定义及存储结构特点。

31、哈希函数、哈希表、哈希冲突、哈希查找的概念。

32、哈希表装填因子的定义及作用。

33、内部排序、外部排序、排序方法、传统排序和优化排序的概念。

34、希尔排序、快速排序、堆排序、归并排序、基数排序的概念。

35、排序方法的稳定性概念。

二、数据结构的基本操作算法1、顺序表与单链表的创建、查找、插入、删除、遍历操作算法。

2、顺序栈的创建、初始化、取栈顶元素、出栈、入栈操作算法。

3、顺序队列和循环队列的创建、初始化、取队头元素、出队、入队操作算法。

4、二叉树的先序、中序、后序遍历的递归算法。

5、中序线索二叉树的创建和遍历操作算法。

6、树和森林的孩子兄弟链表结构的先序和后序遍历操作算法。

7、图的邻接矩阵和邻接表结构的创建操作算法。

8、图的深度优先和广度优先遍历算法。

9、有序顺序表的折半查找算法。

10、二叉排序树的创建、查找、插入、删除算法。

11、传统的插入、选择、交换排序算法。

12、一趟快速排序、归并排序的算法。

三、基本方法1、简单程序的算法时间复杂度和空间复杂度的分析。

2、比较顺序表与链表、单链表、双向链表、循环链表的应用特点。

3、顺序栈的简单应用。

4、循环队列和双端队列的特点及简单应用。

5、二维、三维数组的按行、按列展开的地址计算及转换。

6、二叉树基本性质的应用及简单计算。

7、已知二叉树的遍历,求二叉树的形态。

8、已知二叉树,画出线索二叉树。

9、森林与二叉树的转换方法。

10、哈夫曼树的构造和编码方法。

11、图的邻接矩阵和邻接表结构及逆邻接表结构的转换方法。

12、连通分量、强连通分量的求解方法。

13、深度优先和广度优先遍历最小生成树的求解方法。

14、最小生成树的求解方法。

15、应用栈或队列的拓扑排序的求解方法。

16、关键路径的求解方法。

17、迪杰斯特拉求解单源最短路径的方法。

18、判定树的构造方法及平均查找长度的计算。

19、平衡二叉树的构造方法、平衡因子的计算。

20、线性探测再散列和链地址法解决冲突的哈希表构造方法,并计算平均查找长度。

21、B_树的构造和查找方法。

22、希尔排序、快速排序、堆排序、归并排序、基数排序的方法。

23、排序方法的时间性能、空间性能及稳定性的比较。

四、算法应用设计1、有序顺序表应用,如:合并、查找、排序、消除重复元素等。

2、链表应用,如:链表的合并、排序、查找、删除等。

3、二叉链表二叉树的遍历应用,如:查找、求高度和宽度等。

4、三叉链表的二叉树的非递归遍历算法。

5、图的邻接矩阵和邻接表结构及逆邻接表结构的转换算法。

6、图的深度优先和广度优先遍历的应用算法,如:查找、求解通路和最短路径等。

7、有向无环图的拓扑排序的应用算法。

8、习题集算法例题举例:2.15、2.20、2.29、2.37、6.39、6.41、6.44、6.48、6.52、7.22、7.27、7.34、7.35B、试题举例:数据结构试题(2011级)一、单选题(每小题2分)1.抽象数据类型ADT的三个组成部分是A.数据对象、数据关系和基本操作B.数据元素、逻辑结构和存储结构C.数据项、数据元素和数据类型D.数据元素、数据结构和数据类型2. 在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是A. 对顺序表中元素进行排序B. 插入第i个元素C. 删除第i个元素D. 访问第i个元素的前驱3.设p指向单链表中的一个结点,s指向单链表表外待操作的结点,则下述程序段的功能是:s->next=p->next; p->next=s; t=p->data; p->data=s ->data; s->data=t; A.删除结点pB.插入结点sC.在结点p之后插入结点sD.结点p与插入结点s的数据域互换4.如果入栈序列是1,3,5,…,97,99,且出栈序列的第1个元素为99,则出栈序列中第30个元素是A.39 B.41C.43 D.455.用一个大小为1000的数组来实现循环队列,当前的队头和队尾指针分别为4和996,若要达到队列满的条件,可以继续入队的元素个数是A.5 B.6C.7 D.86.多维数组之所以有行优先顺序和列优先顺序两种存储方式是因为A.数组的元素处在行和列两个关系中B.数组的元素必须从左到右顺序排列C.数组的元素之间存在次序关系D.数组是多维结构,内存是一维结构7. 已知一棵含50个结点的二叉树中只有一个叶子结点,则该二叉树与所对应的孩子兄弟链表表示的二叉树的高度相比A. 前者比后者低B. 前者比后者高C. 前者与后者相同D. 不易确定8. 假设一棵完全二叉树中的第6层上有24个叶子结点,则该二叉树的结点个数最多为A. 55B.79C. 81D.1279.设某棵二叉树的中序遍历序列为ABCDE,后序遍历序列为BADEC,则该二叉树的层次遍历序列为A.BADCE B.BCDAEC.CAEBD D.CBDAE10.如果某图的邻接矩阵是非对称矩阵,则此图一定不.是A. 有环图B. 有向无环图C. 强连通图D. 上述答案有错11. 若一个具有N个顶点和K条边的无向图(N>K)是一个森林,则该森林的数目一定是A.K B.NC.N-K D.112. 已知哈希表的存储空间为T[0..18],哈希函数H(key)= key%17,并用线性探测再散列法处理冲突。

哈希表中已插入下列关键字:T[5]=39,T[6]=57和T[7]=7,则下一个关键字23插入的位置是A. T[2]B. T[4]C. T[8]D. T[10]13.若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字为w的过程中,先后进行比较的关键字依次为A.f,r,s,t B.f,s,g,qC.g,q,s,t D.g,d,q,s14.对关键字序列(5,1,4,3,7)进行堆排序时,输出第2个元素后的系列结果为A.(1,3,4,5,7) B.(7,3,5,4,1)C.(1,4,3,5,7) D.(7,4,5,3,1)15.下列排序算法中,时间复杂度不受数据初始状态影响,恒为0(nlogn)的是A. 归并排序B. 冒泡排序C. 直接选择排序D. 快速排序二、应用题(每小题6分)16. 双端队列是一种插入和删除仅在线性表的两端都可进行的线性表。

若允许一端进行插入和删除,另一端只允许删除的双端队列为输入受限的双端队列。

假设输入序列为1,2,3,4。

双端队列的左端为单输入端。

试求:(1)画出输入受限的双端队列的示意图。

(2)给出单输入端的输出端口不可能得到的输出序列。

(至少5种)17.试求:(1(2)说明在非递归且不使用栈的中序遍历中,Parent域的作用。

18.已知一个无向带权图的边结点结构为(顶点1,顶点2,权值),顶点集V和边集E分别为:V={1,2,3,4,5};E={<1,2,2>,<1,4,6>,<2,3,8>,<2,4,3>,<3,5,5>,<3,4,2>,<4,5,9>}。

试求:(1)画出该图的邻接矩阵存储结构示意图。

(2)采用普利姆算法,求最小生成树,画出求解过程,给出最小代价的结果。

19.已知一组初始记录关键字序列为(3,9,51,8,4,7,2,52)。

试求:(1)给出该序列的快速排序的前三趟结果。

(2)举例说明快速排序的不稳定性。

20. 已知一组初始记录关键字序列为(35,20,33,48,59,47,62,50,48)。

其哈希函数为H(key)=key%13,处理冲突的方法为链地址法。

试求:(1)设计哈希表。

(2)在等概率查找时查找成功的平均查找长度。

三、算法阅读与分析题(本题10分)已知SqList为顺序表类型,阅读下列算法,回答问题。

void Sq_F(SqList &L {1. for(i=j=0;i<L.length;i++){2. if(L.elem[i]>=0){3. if(i!=j) //注释(1)4. L. elem [j]= L.elem[i];5. j++; //注释(2)6. }//if7. }//for8. L.length=j;9. }// Sq_F试求:(1)说明算法的功能。

(2)在语句3和语句5后面加上注释。

(3)若初始顺序表L=(19,-8,49,-56,-10,10,0,20,-50),给出算法执行后L 的结果。

四、算法设计题(本题10分)已知LinkList为单链表类型,L为带头结点的单链表的头指针。

指针p为当前访问的结点指针,pre为p的前驱结点指针。

结点Lnode的结构为(data,next)。

设计算法,从任意给定位置开始,将指针p右边的k个结点置逆。

函数原型定义如下:void shift_right_k(LinkList &L, LinkList p,LinkList pre,int k)试求:(1)算法描述。

相关文档
最新文档