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

合集下载

数据结构期末考试复习总结,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时,每加入一个数据后堆的变化。

数据结构期末复习汇总

数据结构期末复习汇总

数据结构期末复习汇总数据结构是计算机科学中十分重要的概念之一,它是指数据对象以及数据对象之间的关系、操作和操作规则的集合。

在计算机科学的学习中,掌握数据结构是至关重要的一步。

为了帮助大家复习期末考试,以下是一些数据结构的重要知识点的总结。

一、线性表线性表是最简单的一种数据结构,它是一种有序的数据元素集合。

线性表的特点是元素之间的关系是一对一的关系,每个元素都与它的前驱和后继相连接。

1.数组:数组是最常见的线性表结构,它由相同类型的数据元素组成,这些元素通过索引来访问。

2.链表:链表是另一种常见的线性表结构,它由节点组成,每个节点包含了数据以及一个指向下一个节点的指针。

二、栈和队列栈和队列是常用的线性结构,它们在操作上有一些限制。

1.栈:栈是一种具有后进先出(LIFO)特性的线性表。

栈中的元素只能在栈顶进行插入和删除操作。

2.队列:队列是一种具有先进先出(FIFO)特性的线性表。

队列中的元素只能在队尾进行插入操作,在队头进行删除操作。

三、树和二叉树树是一种非线性的数据结构,它由节点和边组成。

树的一个节点可以有多个子节点,但是每个节点只能有一个父节点。

1.二叉树:二叉树是一种特殊的树结构,每个节点最多只能有两个子节点。

2.二叉树:二叉树是一种特殊的二叉树,它满足左子树的所有节点的值都小于根节点的值,右子树的所有节点的值都大于根节点的值。

四、图图是一种非常重要的非线性结构,它由节点和边组成。

图的节点之间可以有多种不同的关系。

1.有向图:有向图是一种图结构,图的边有方向,从一个节点到另一个节点。

2.无向图:无向图是一种图结构,图的边没有方向。

五、排序和算法排序算法是对一组数据进行排序的算法,算法是找到目标元素在一组数据中的位置的算法。

1.冒泡排序:冒泡排序是一种交换排序算法,其核心思想是比较相邻的元素并进行交换,将最大(或最小)元素逐渐“冒泡”到数组的末尾。

2.快速排序:快速排序是一种分治排序算法,其核心思想是通过选择一个基准元素,将数组划分为两个子数组,其中一个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于基准元素,然后对两个子数组进行递归排序。

数据结构期末复习重点知识点总结

数据结构期末复习重点知识点总结

数据结构期末复习重点知识点总结一、数据结构概述数据结构是计算机科学中一门关于数据组织、存储和管理的学科。

它涉及到各种数据类型和它们之间的关系,以及对这些数据类型进行有效操作和处理的算法。

二、基本数据结构1. 数组- 数组是一种线性数据结构,用于存储相同类型的数据元素。

- 数组的特点是随机访问和连续存储。

- 数组的插入和删除操作需要移动其他元素,时间复杂度为O(n)。

2. 链表- 链表是一种线性数据结构,通过节点之间的指针链接来组织数据。

- 链表的特点是插入和删除操作简单,时间复杂度为O(1)。

- 链表分为单链表、双向链表和循环链表等不同类型。

3. 栈- 栈是一种具有后进先出(LIFO)特性的数据结构。

- 栈的操作主要包括压栈(Push)和弹栈(Pop)两个操作。

- 栈常用于表达式求值、递归算法的实现等场景。

4. 队列- 队列是一种具有先进先出(FIFO)特性的数据结构。

- 队列的操作主要包括入队(Enqueue)和出队(Dequeue)两个操作。

- 队列常用于实现缓冲区、消息队列等场景。

5. 树- 树是一种非线性的数据结构,由节点和边组成。

- 树的节点具有层级关系,由根节点、子节点和叶节点等组成。

- 常见的树结构有二叉树、红黑树、B树等。

6. 图- 图是一种非线性的数据结构,由节点和边组成。

- 图的节点之间可以有多对多的关系。

- 图的遍历方式有深度优先搜索(DFS)和广度优先搜索(BFS)。

三、常见的数据结构算法1. 排序算法- 冒泡排序、插入排序、选择排序等简单但效率较低的排序算法。

- 快速排序、归并排序、堆排序等高效的排序算法。

- 基数排序、桶排序等适用于特定场景的排序算法。

2. 查找算法- 顺序查找、二分查找等常用的查找算法。

- 树结构相关的查找算法,如二叉搜索树、红黑树等。

- 哈希查找、索引查找等高效的查找算法。

3. 图算法- Dijkstra算法、Bellman-Ford算法等最短路径算法。

数据结构期末总复习

数据结构期末总复习

期末总复习一、判断题1、顺序存储的线性表可以随机存取。

(√)2、在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素。

( ×)3、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。

( √ )4、线性结构的基本特征是每个结点至多只有一个直接前驱和一个直接后继( √)。

5、线性表的线性存储结构优于链表存储结构。

( ×)6、所谓循环队列指的是队列的存储结构是循环链表( ×)。

7、将一棵树转化为二叉树后,这棵二叉树的根结点没有右子树( √)。

8、完全二叉树的某结点若无左孩子,则必定是叶子结点。

( √)9、二叉树的前序遍历序列中,任意一个结点均处在其子树结点的前面。

( √)10、二叉树的前序和后序遍历序列能惟一确定这棵二叉树。

( ×)11、在无向图中,边的条数是结点度数之和。

( ×)12、图的邻接矩阵必定是对称矩阵。

( √)13、顺序查找并不要求关键码一定有序。

( √)二、选择题1. 计算机算法指的是(C),它必具备输入、输出和(F )5个特性。

A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法E.可行性、可移植性和可扩充性F.可行性、确定性和有穷性G.确定性、有穷性和稳定性H.易读性、稳定性和安全性2. 算法分析的目的是(C),算法分析的两个主要方面是(E )。

A.给出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性E.空间复杂性和时间复杂性F.正确性和简明性G.可读性和文档性H.数据复杂性和程序复杂性3. 算法与程序的主要区别在于算法必须满足____D____。

A、先进性B、正确性C、高效性D、有穷性a)若长度为n的无序线性表采用顺序存储结构,在其中插入某个元素的平均移动次数为____C_____。

A、nB、( n - 1 ) / 2C、n / 2D、( n + 1 ) / 22. 有头结点单循环链表以first 为表头指针,设next 为链表的指针域,则链表为空的条件为___B___。

数据结构期末概念总结

数据结构期末概念总结

数据结构期末概念总结第一部分:基本概念和算法复杂度分析1. 数据结构的定义和分类2. 算法的定义和特性3. 算法复杂度分析的方法和技巧4. 时间复杂度和空间复杂度的计算和比较5. 最坏情况、平均情况和最好情况的复杂度分析6. Big-O符号和渐进记号法的使用和解读第二部分:线性数据结构1. 数组和链表的定义、特性和比较2. 栈和队列的定义、特性和应用3. 双向链表和循环链表的定义、特性和应用4. 线性数据结构的遍历和操作算法5. 线性数据结构的实现和优化技巧第三部分:树和二叉树1. 树的定义、特性和应用2. 二叉树的定义、特性和分类3. 二叉树的遍历算法(前序、中序、后序、层序)4. 二叉搜索树的定义、特性和操作算法5. 平衡二叉树和AVL树的定义、特性和操作算法6. 堆和二叉堆的定义、特性和应用第四部分:图1. 图的定义、特性和分类2. 图的表示方法(邻接矩阵、邻接表、哈希表)3. 图的遍历算法(深度优先搜索、广度优先搜索)4. 最短路径算法(Dijkstra算法、Floyd-Warshall算法)5. 最小生成树算法(Prim算法、Kruskal算法)第五部分:高级数据结构1. 哈希表的定义、特性和应用2. 字典树的定义、特性和应用3. 线段树的定义、特性和应用4. 并查集的定义、特性和应用第六部分:高级算法思想1. 分治算法和递归思想2. 动态规划算法和状态转移方程3. 贪心算法和贪心选择策略4. 回溯算法和剪枝技巧在本篇文章中,我从基本概念和算法复杂度分析开始,系统地总结了数据结构课程的内容。

通过对线性数据结构(数组、链表、栈、队列)、树和二叉树、图、高级数据结构(哈希表、字典树、线段树、并查集)以及高级算法思想的介绍,读者们可以对数据结构的主要概念有一个全面的了解。

当然,数据结构不仅仅是掌握概念,更重要的是能够灵活运用这些概念解决实际问题。

因此,读者们在学习数据结构的过程中,一定要多做练习和实践,深入理解每种数据结构的应用场景和实现细节。

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

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

数据结构》期末考试题型及分值1)简答题题*5 分=30 分简要回答要点2)分析题题*5 分=30 分给出结果3)设计题题*10 分=10 分设计思想及结果4)编程题题*10 分=10 分完整代码5)综合题题*20 分=20 分抽象数据类型的定义、表示、实现、算法分析{ 定义=功能ADT)表示=存储结构体实现=算法(基本操作)算法分析=时间、空间复杂度}考试概念有: 1.数据结构{ 一、线性表(栈-队-列-串-数组-广义表-逻辑结构-存储结构-运算结构)二、非线性表(集合- 树-图)}2. 抽象数据类型数据对象-数据关系- 基本操作3. 算法性质-要求(设计)-效率(度量)4. 实例查找:高效查找算法排序:高效的排序算法分析题考试题目参考1)1-2-3-4-5-6 顺序建BBST2) 6-5-4-3-2-1 顺序建BBST一.填空恵I.数据皓构是一门研吨耶畫值计兔的刃胖谀计间通屮计U机的Mft/jfc它ffl 之仙的拱*和运算卷的学科.1整掘第构被腦式地宦义为<I>.KJ ,其屮DJC桑—炖有隈整合.K 是和上的 曲 育磴懐M T*玉曇世髓恂包松勘机的 WM» 、MIMML 和It 据的 歳■ 这三牛育面前内粉.4+載据站构按世辑蚓构可付为两人陇*它n 分别兄—理旌址讯―和—,枚仙.段—気纨性蜡购巾兄冨之间存庄一对一共鑑.辑形毎构山元聊之间存住二^吐圭黄議・图形船构屮无JK 之伺存在 圭蚩圭关蝶”&左线性酷构中,第一牛蠕点 於哲前驰蠕点+乳余歸个坤点有n 貝有1个前鉴轴点;塩橋一个酣点 淮 启_恬统络点.耳余毎个结点有且只有1牛陆续轄点=孔在胃形時构屮.暂根结点液令血鱼一焙点.其余毎个结点有且只任」_牛前滋焙点t 叶了誌点没有 竝£—结乩 比余晦个怡点的后擁恰点数可叹任泌t_・乩在斟常站构屮.毎个结孤的前駆旳血致和后墟结点數可以 枉诡爭个■故据的存储结构可胡四种華木的存畤方链表平,’艺如分别足赎擀、捷式、背n 粗 離列io 敦据咐运许址常用的和飞种.它们分别是逊、刪障盘價「n? 11. -・个JT 法的效率可彷为吋觥_效睾和空“L 效事"11在戴呼表屮幅入琐则■一+元豪,需耍平均雀动盍屮 半元H ・具体聲动的兄■个叠与袁松和防L 素在农屮細但伍荣.IX 域性表中站点的理含址右規 帕,拮点创佝关采品―一对一一的.14, 问~亍长庫为Ti 脚问1B 豹第i 个元薦I 】WiWn+li 之前插入一个云冨涉 裔|疋麻移动 "1个兀轧 15. 向-个长度为机的向量中圮除蘭i 平元素tlWiWn 】时.需向前移动n-i 元亂简答题实例宀谕谨幢序投和链左存储庁式的伶点荐;烦序表的优点是町以琦机W 冋数挥元盍,缺点垦乂小同圭・不利干站般点(婚减结曲应住霍要桔曲吨累).悽衣的优点皿冗用茹竹方式増减结血 儿常丹便【只需故变茹£1捋向, 不移动粘点人 其缺点是不劇枉幣机访何・只能嗽宇山间,忖外,琏伞鉛也卜坤加抬计域* 造由颗外存储宁间啣L3,対性农造置头姑点沛件戶丿J "T {至少说出两荼好处)(1) XI 带头结点的苗表,在表的任何绪点之前插入结点理删除表中任何站心•斯些'故的部 是修改前一亍结点的指针域,阖为任何兀索结点都右荊驰詰点〔若昭表没有头结点,眦苜兀索塔丿卅仃忒亭「门二 在耳前播入箱点和删除演箱点时操作貝朵曲)•(卩 刈带头站克的懺辄 表MHWB 向久绪克的II :空菲¥1 •闵此空舉与*空崔的处世足头妙点苗忙卅出1-匣襄勾命空表处理一* 足甜点之IttfiHt 更方便“设计题:(1)1 +设计计算叉檜中所仃菇点值之和的算法。

期末数据结构复习总结

期末数据结构复习总结

数据结构第一章1、数据是描述客观事物的数和字符的集合2、数据项:是具有独立含义的数据最小单位,也称为字段或域3、数据对象:指性质相同的数据元数的集合,是数据的一个子集4、数据结构:指所有数据元素以及数据元素之间的关系5、数据的逻辑结构:由数据元素之间的逻辑关系构成6、数据的存储结构:数据元素及其关系在计算机存储器中的存储表示,称为物理结构逻辑结构的表达方式:1、图表表示:采用表格或图形直接描述数据的逻辑关系。

2、二元组表示:通用的数据逻辑结构表示方式:R={r},r={<010,021>,<021,027>,<027,029>}逻辑结构的类型:1、集合:指数据元素之间除了“同属于一个集合”的关系以外别无其他关系。

2、线性结构:一对一关系,只有一个前驱和一个后继元素。

3、树形结构:多对多关系,除了开始元素以外,都只有一个前驱和多个后继元素。

什么是算法:是问题求解步骤的描述,是指令的有限序列。

1、有穷性:执行有穷步后结束2、确定性:不能有二义性3、可行性:算法可以通过有限次的操作完成其功能,能够被重复地执行4、有输入:一个算法有0个或多个输入5、有输出:一个算法有一个或多个输出算法设计的目标:正确性(算法能正确执行)、可使用性(方便地使用)、可读性(算法易于理解)、健壮性(有好的容错性,不会异常中断或死机)、高效率与低存储量需求(算法的执行时间和存储空间)算法时间性分析方法:事后统计法(缺点:必须执行、存在很多因素掩盖算法本质)、事前估算法(仅考虑算法本身的效率高低、只依赖于问题的规模)第二章线性表:具有相同特性的数据元素的一个有限序列有序表:指线性表中的所有元素按递增或剃减方式有序排列顺序表:线性表的顺序存储结构简称为顺序表(下标从0开始),从逻辑上相邻的元素对应的物理存储位置也相邻,当进行插入或删除的操作时要平均移动半个表的元素,相当费时。

链表:线性表的链式存储结构称为链表,拥有唯一的标识头指针(head pointer),相应的指向开始结点(first pointer),指向尾结点的称为尾指针(tail pointer)。

数据结构考试总结.docx

数据结构考试总结.docx

数据结构指的是数据之间的关系,一般包括三个方面的内容:数据的逻辑结构、数据的存储结构、数据的运算或操作。

数据的存储结构有四种基本方式:顺序结构、链接结构、索引结构、散列结构。

法效率的度量分为:事后测量和事前估计。

物理结构:指数据在计算机中存放的方式,即数据逻辑结构的物理存储方式。

主要有顺序存储和链式存储。

【据的操作指利用计算机对数据进行插入、删除、修改、查找、排序等操作。

数据类型:一个数据的集合,以及定义于这个数据集合上的一组操作的总称。

算法是对特定问题求解步骤的一种描述。

算法是一个有穷的指令集,这些指令为解决某V定任务规定了一个运算序列。

算法特性:输入输出、确定性、有穷性、可行性。

法评价:正确性、可读性、稳建性、时间复杂度、空间复杂度线性表是n(n>=0)个相同类型数据元素a】,a2z…,a n构成的有限序列。

是一种线性结构,允许在任意位置进行插入和删除操作。

—般表示为:L = ( a l5 a2,・・・,a n)形式化定义:Linearjist = (D, R)线性表的顺序存储结构:用一组地址连续的存储单元依次存储线性表的各个数据元素。

逻辑上相邻的元素在物理存储上也相邻。

顺序表的优点:空间单元利用率高、可以方便的随机存取表中的任一元素、算法简单顺序表的缺点:插入和删除运算需移动数据元素线性表的链式存储结构特点:〔■不要求逻辑上相邻的元素在物理位置上也相邻。

可以2、线性表兀素之间的逻辑关系由指针指示。

顺序用任意的存储单兀存储数据兀素。

存取机制。

循环单链表与单链表的区别在于:循环链表的最后一个结点的指针指向头结点,整个链表形成一个环。

优势在于:从表中任意一个结点出发都可找到表中其他结点。

静态链表就是用数组中的结点来构造链表•主要用于不设''指针〃的程序设计语言单链表的优点:插入和删除操作时不需要移动数据元素单链表的缺点:①每个结点要有一个指针域,空间单元利用率不高②算法相对复杂些栈又称堆栈,是一种操作受限制的线性表,只允许在表的固定一端(表尾)进行插入或删除。

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

《数据结构》期末考试题型及分值(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时,每加入一个数据后堆的变化。

见图12 图12 图11四、阅读算法(每题7分,共14分)4 4 4 4 4 2 2 25 5 5 2 2 8 8 4 352 83 41.LinkListmynote(LinkListL){//L是不带头结点的单链表的头指针if(L&&L->next){q=L;L=L->next;p=L;S1:while(p->next)p=p->next;S2:p->next=q;q->next=NULL;}returnL;}请回答下列问题:(1)说明语句S1的功能;查询链表的尾结点(2)说明语句组S2的功能;将第一个结点链接到链表的尾部,作为新的尾结点(3)设链表表示的线性表为(a1,a2,…,a n),写出算法执行后的返回值所表示的线性表。

返回的线性表为(a2,a3,…,a n,a1)2.voidABC(BTNode*BT){ifBT{ABC(BT->left);ABC(BT->right);cout<<BT->data<<'';}}该算法的功能是:递归地后序遍历链式存储的二叉树五、算法填空(共8分)二叉搜索树的查找——递归算法:boolFind(BTreeNode*BST,ElemType&item){if(BST==NULL)returnfalse;//查找失败else{if(item==BST->data){item=BST->data;//查找成功return__true__;}elseif(item<BST->data)returnFind(___BST->left__,item);elsereturnFind(____BST->right__,item);}//if}六、编写算法(共8分)统计出单链表HL中结点的值等于给定值X的结点数。

intCountX(LNode*HL,ElemTypex)intCountX(LNode*HL,ElemTypex){inti=0;LNode*p=HL;//i为计数器while(p!=NULL){if(P->data==x)i++;p=p->next;}//while,出循环时i中的值即为x结点个数returni;}//CountX数据结构试卷(二)三、应用题(36分)1.设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。

(22,40,45,48,80,78),(40,45,48,80,22,78)2.设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。

q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q;3.设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。

2,ASL=91*1+2*2+3*4+4*2)=25/94.设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。

树的链式存储结构略,二叉树略5.设有无向图G,要求给出用普里姆算法构造最小生成树所走过的边的集合。

E={(1,3),(1,2),(3,5),(5,6),(6,4)}6.设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。

四、算法设计题(16分)1.设有一组初始记录关键字序列(K1,K2,…,K n),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i,右半部分的每个关键字均大于等于K i。

设有一组初始记录关键字序列(K1,K2,…,K n),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i,右半部分的每个关键字均大于等于K i。

voidquickpass(intr[],ints,intt){inti=s,j=t,x=r[s];while(i<j){while(i<j&&r[j]>x)j=j-1;if(i<j){r[i]=r[j];i=i+1;}while(i<j&&r[i]<x)i=i+1;if(i<j){r[j]=r[i];j=j-1;}}r[i]=x;}2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。

设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。

typedefstructnode{intdata;structnode*next;}lklist;voidintersection(lklist*ha,lklist*hb,lklist*&hc){lklist*p,*q,*t;for(p=ha,hc=0;p!=0;p=p->next){for(q=hb;q!=0;q=q->next)if(q->data==p->data)break;if(q!=0){t=(lklist*)malloc(sizeof(lklist));t->data=p->data;t ->next=hc;hc=t;}}}数据结构试卷(三)三、计算题(每题10分,共30分)1.已知二叉树的前序遍历序列是AEFBGCDHIKJ ,中序遍历序列是EFAGBCHKIJD ,画出此二叉树,并画出它的后序线索二叉树。

2.已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6],假定选用的散列函数是H (K )=Kmod7,若发生冲突采用线性探查法处理,试:H(36)=36mod7=1;H 1(22)=(1+1)mod7=2;….冲突H(15)=15mod7=1;….冲突H 2(22)=(2+1)mod7=3; H 1(15)=(1+1)mod7=2; H(40)=40mod7=5; H(63)=63mod7=0; H(22)=22mod7=1;….冲突(1)计算出每一个元素的散列地址并在下图中填写出散列表: `01234566336152240(2)求出在查找每一个元素概率相等情况下的平均查找长度。

ASL=6.1531121=++++ 3.已知序列(10,18,4,3,6,12,1,9,18,8)请用快速排序写出每一趟排序的结果。

(8,9,4,3,6,1),10,(12,18,18) (1,6,4,3),8,(9),10,12,(18,18)1,(3,4,6),8,9,10,12,18,(18)1,3,(4,6),8,9,10,12,18,181,3,4,6,8,9,10,12,18,18四、算法设计题(每题15分,共30分)1.设计在单链表中删除值相同的多余结点的算法。

设计在单链表中删除值相同的多余结点的算法。

typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}lklist;voiddelredundant(lklist*&head){lklist*p,*q,*s;for(p=head;p!=0;p=p->next){for(q=p->next,s=q;q!=0;)if(q->data==p->data){s->next=q->next;free(q);q=s->next;}else{s=q,q=q->next;}}}2.设计一个求结点x在二叉树中的双亲结点算法。

设计一个求结点x在二叉树中的双亲结点算法。

typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitr ee;bitree*q[20];intr=0,f=0,flag=0;voidpreorder(bitree*bt,charx){if(bt!=0&&flag==0)if(bt->data==x){flag=1;return;}else{r=(r+1)%20;q[r]=bt;preorder(bt->lchild,x);preorder( bt->rchild,x);}}voidparent(bitree*bt,charx){inti;preorder(bt,x);for(i=f+1;i<=r;i++)if(q[i]->lchild->data==x||q[i]->rchild->data)b reak;if(flag==0)printf("notfoundx\n");elseif(i<=r)printf("%c",bt->data);elseprintf("notparent");}数据结构试卷(四)三、计算题(每题10分,共30分)1、画出广义表LS=((),(e),(a,(b,c,d)))的头尾链表存储结构。

相关文档
最新文档