期末数据结构复习总结

合集下载

数据结构总结期末总结报告

数据结构总结期末总结报告

数据结构总结期末总结报告数据结构是计算机科学中一个非常重要的基础课程,它研究的是计算机中数据的组织方式和存储结构,为算法和程序的设计提供了基础。

本报告将对我在本学期学习数据结构课程的收获进行总结。

一、知识框架梳理本学期学习的数据结构课程主要包括线性结构、树形结构、图形结构等内容。

在学习过程中,我首先对每一种数据结构的基本原理进行了学习和理解,通过课堂讲解、教材阅读以及与同学交流,我逐渐形成了对数据结构的整体框架。

1. 线性结构(数组、链表、栈、队列)线性结构是最简单的数据结构之一,它的特点是数据元素之间只存在一对一的关系。

在本学期的学习中,我了解了数组、链表、栈和队列等线性结构的基本原理和实现方式。

数组是一种具有固定大小的数据结构,它的特点是内存连续、随机访问,但插入和删除操作比较低效。

链表是一种动态的数据结构,它的特点是内存不连续、插入和删除操作高效,但随机访问效率较低。

栈和队列都是基于线性结构的特殊形式,栈是后进先出(LIFO)的结构,而队列是先进先出(FIFO)的结构。

通过对这些线性结构的学习,我进一步提高了对数据的组织和操作的理解。

2. 树形结构(二叉树、堆、哈希表)树形结构是线性结构的扩展,它的特点是数据元素之间存在一对多的关系。

在本学期的学习中,我了解了二叉树、堆和哈希表等树形结构的基本原理和实现方式。

二叉树是一种每个节点最多有两个子节点的树形结构,它的特点是插入、删除操作高效,但查找操作效率较低。

堆是一种特殊的二叉树结构,它的特点是每个节点的值都大于等于(或小于等于)其子节点的值。

堆主要用于实现优先队列,通过堆的调整(上滤和下滤)可以实现高效的插入和删除操作。

哈希表是一种通过哈希函数将数据映射到固定大小的数组中的数据结构,它的特点是查找操作效率很高,但插入和删除操作的效率较低。

通过对这些树形结构的学习,我进一步提高了对数据的组织和操作的理解,并学到了一些高效的算法和技巧。

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. 队列队列是一种具有特定操作规则的线性结构,它的特点是先进先出。

队列有两个基本操作:入队和出队。

入队操作将一个元素放入队尾,出队操作将队头元素移除。

队列的应用场景很多,比如任务调度、消息传递等。

三、非线性结构1. 树树是一种非线性结构,它由节点组成,节点之间存在一对多的层次关系。

树的基本概念包括根节点、叶子节点、父节点、子节点等。

树的应用场景很多,比如文件系统、数据库索引等。

2. 二叉树二叉树是一种特殊的树,它的每个节点最多有两个子节点,分别称为左子节点和右子节点。

二叉树的遍历方式有前序遍历、中序遍历和后序遍历。

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

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

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述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. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。

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

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

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

数据结构期末复习总结

数据结构期末复习总结

第1章绪论1.数据(Data) :是描述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合的统称。

包括数值数据和非数值数据(字符串、图形、图像、音频、视频)。

2.数据元素(Data Element) :表示一个事物的一组数据称为一个数据元素(结点顶点、记录);数据元素是数据的基本单位。

3.数据项(Data Item):是数据元素中有独立含义的、不可分割的最小标识单位(字段、域、属性)。

一个数据元素可由若干个数据项组成。

4.数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。

如字符集合C ={A,B,C,…} 。

数据(Data) :是描述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合的统称。

包括数值数据和非数值数据(字符串、图形、图像、音频、视频)。

数据元素(Data Element) :表示一个事物的一组数据称为一个数据元素(结点、顶点、记录);数据元素是数据的基本单位。

数据项(Data Item):是数据元素中有独立含义的、不可分割的最小标识单位(字段、域、属性)。

一个数据元素可由若干个数据项组成。

数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。

如字符集合C ={A,B,C,…} 。

●数据的逻辑结构指数据元素之间的逻辑关系,用一个数据元素的集合和定义在此集合上的若干关系来表示。

●四种逻辑结构:集合、线性结构、树型结构、图状结构。

●数据结构的形式定义是一个二元组:Data-Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集。

例1:设数据逻辑结构B=(K,R)K={k1, k2, …, k9}R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>,<k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6>有时候关系图不唯一(一般是无向图)●数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。

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

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

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

数据结构期末概念总结

数据结构期末概念总结

数据结构期末概念总结第一部分:基本概念和算法复杂度分析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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构第一章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)。

逻辑上相邻的元素的物理存储位置通过指针来链接,结点的存储位置可以任意安排,插入或删除时只需修改相关指针,方便又省时。

1、单链表:有一个指针域,指向其后继结点(next),分为头插法和尾插法插入结点的操作:s->next=p->next ; p->next-s;删除结点的操作:p->next=p->next->next;删除结点后还应释放结点:q=p->next ; p->next=q->next;free(q)(头插入的话把q改为L)尾插入:s->data=a[i] ; r->next=s ; r=s;2、线性表在单链表的基本运算:3、双链表:有两个指针域,指向其前驱结点和后继结点4、循环链表:分为循环单链表、循环双链表(就是把双链表的尾结点next由空指向头结点,在把头结点prior指针域指向尾结点,形成两个环)两种类型第三章栈:只能在一端进行插入另一端进行删除的线性表,允许插入、删除的是栈顶,表的另一端是栈底,有“先进后出”的特点。

顺序栈:采用顺序存储结构的栈称为顺序栈1、栈空的条件:s->top==-1;2、栈满的条件:s->top==MaxSize-1(数组的最大下标)3、元素e的进栈操作:先将栈顶指针top加1,然后在把元素e放在栈顶指针处4、出栈操作:先将top处的元素取出,在把栈顶减1链栈:采用链式存储结构的栈称为链栈1、栈空的条件:s->next==NULL2、栈满的条件:只有内存溢出时才出现栈满,要以看成不存在栈满3、元素e的进栈操作:新建一个结点存放元素e(由p指向它),将结点p插入到头结点之后。

4、出栈操作:取出首结点的data值并将其删除栈的表达示:1、前缀表达式:运算符在操作数的前面,如1+2*3的前缀表达式为+1*232、中缀表达式:“先乘除,后加减,从左到右计算,先括号内,后括号外”的规则3、后缀表达式:运算符在操作数的后面,如1+2*3的后缀表达式为1 2 3 * +队列:操作受限制的线性表,其限制为允许表在一端进行插入(队尾rear)操作,表的另一端进行删除(队首front)操作,先进先出的特点顺序队:采用顺序存储结构的队称为顺序队1、队空的条件:q->front==q->rear2、队满的条件:q->rear==MaxSize-1 (数组的最大下标)3、元素e的进队操作:先将rear加1,然后在把元素e放在栈data 数组的rear位置4、出队操作:先将front加1,然后在取出data数组中front位置的元素环形队列:当队满的条件(rear==MaxSize-1)成立时,实际上队列中可能还有空位置,因此称为假溢出,解决方法用求余运算(%)来实现:队头指针front循环增1:front=(front+1)%MaxSize队尾指针rear循环增1:rear=(rear+1)%MaxSize队空条件是q->rear==q->front;队满条件是(q->rear+1)%MaxSize==q->front。

第四章串:是由0个或多个字符组成的有限序列。

两个串相等当且仅当这两个串的长度相等并且对应位置上的字符都相同。

一个串中任意个连续字符组成的序列称为该串的子串串也有顺序存储结构和链式存储结构,前者称为顺序串,后者为链串串的模式匹配:设有两个串s和t,串t的定位就是要在串s中找到一个与t相等的子串,通常把s称为目标串,把t称为模式串。

第七章树是由N个结点组成的有限集合,且只有一个结点是树的根结点,其余结点不相交。

树的逻辑表达方法:树形表示法、文氏图表示法、凹入表示法、括号表示法。

1、结点的度与树的度:树中某个结点的子树的个数称为该结点的度,树中所有结点的度中最大的为树的度。

2、分支结点与叶子结点:度为0的是叶子结点,度为1的为单支结点、度为2的为双分支结点3、路径长度是该路径所通过的结点数目减14、孩子结点、双亲结点、兄弟结点5、结点层次(从树根开始定义),树中结点最大的层次称为树的高度或树的深度6、有序树和无序树7、森林:n个互不相交的树称为森林,把多个子树的根去掉就是森林树的性质:1、树中的结点数等于所有结点的度数之和加12、度为M的树中第i层上最多有m (i-1)次方个结点。

树的运算:先根遍历、后根遍历、层次遍历树的存储结构:双亲存储结构、孩子链存储结构、孩子兄弟链存储结构二叉树的定义:是一个有限的结点集合,有两棵互不相交的左子树和右子村。

满二叉树:叶子结点集中在最下一层,只用度为0和度为2的结点完全二叉树:叶子结点在最下面两层中出现,多数在左边的位置上,度为1的结点,有且只可能有一个,只能是左孩子而无右孩子。

性质1:非空二叉树的叶子结点等于双分支结点数加1性质2:非空二叉树的第i层有2 (i-1)次方个结点性质3:高度为h的二叉树最多有2 (h)次方-1个结点树转变为二叉树:兄弟变为右孩子二叉树的遍历:先序遍历、中序遍历、后序遍历、层次遍历线索二叉树:lchild(等于0时表示左孩子,为1时表示前驱结点)、Rchild(等于0时表示右孩子,为1时表示后继结点)哈夫曼树:带权路径长度WPL最小的二叉树称为哈夫曼树或最优二叉树带权路径长度:该结点上权的乘积树的带权路径长度为=关键字*关键字的权+关键字*关键字的权…哈夫曼树编码:左分支为0、右分支为1,权值越大的字符编码越短,不会出现一个字符的哈夫曼编码是另一个哈夫曼编码的前缀。

第八章图形结构属于非线性数据结构,有0个或多个前驱元素,多对多图的定义:是由顶点和边构成的。

分为无向图(V(G1)={(1,2),(1,3),(1,0),(2,3)})和有向图(V(G1)={<1,2>,<1,3>,<1,0>,<2,3>})若图的任意两个顶点都是连通的,刚称为G为连通图,连通图的连通分量只有一个(即本身),而非连通图有多个连通分量。

图的存储结构分为:邻接矩阵、邻接表(是一种顺序与链式存储相结合)、其他存储方法(十字链表)图的遍历:深度优先遍历、广度优先遍历最小生成树(不能封闭):普里姆算法(选择最小的边连在一起)、克鲁斯卡尔算法(连最小的边)第九章被查找对象是由一组元素组成的表或文件,称为查找表,所有元素在关键字上的取值是唯一的。

查找:内查找(在内存中进行)、外查找(需要访问外存)顺序查找法:从表的一端向另一端逐个将元素的关键字和给定值k比较,若相等,则查找成功,不相等,则失败折半查找法(二分查找):要求线性表是有序表二叉排序树:其定义为二叉排序树或空树。

1、若根结点的左子树非空,则左子树上的结点关键字都小于根结点关键字2、若根结点的右子树非空,则右子树上的结点关键字都大于根结点关键字3、根结点的左、右子树本身又各是一棵二叉排序树4、查找成功=(第一排*几个关键字+第二排*几个关键字+……)/关键字的总数。

5、查找不成功(补空叶子结点变成满二叉树,从0开始看是第几排)=( 第0排*为空的叶子结点+第二排*为空的叶子结点+……)/补空叶子结点的总数平衡二叉树:二叉树中的每个结点的左、右子树的高度都是平衡的,最多相差1。

哈希表又称散列表:设置一个长度为m的连续内存单元,以每个元素的关键字为自变量,通过哈希函数求出哈希地址。

哈希函数的构造方法:直接定址法、除留余数法、数字分析法不同的关键字有相同的哈希地址,出现冲突称为:同义词冲突哈希冲突方法:开放定址法(线性探测法(余数相同时加1再%素数)、平方探测法(余数加减第几次的平方再%素数))、拉链法树的总结点数n=(n0+n1+n2…)+1树的叶子结点n0=n2+1度为2的结点n2=n0-1度为m的树中第i层上最多有m(i-1)次个结点堆选择是一种选择排序希尔排序:个数/2取嫫,分为几部分冒泡排序:最后一个数与前面比大小快速排序:取第一个为基点,第二个为i,最后一个j,先比j,大的数放最右边,小的放左边。

相关文档
最新文档