数据结构word笔记

合集下载

数据结构笔记

数据结构笔记

数据结构笔记主要内容:基础知识:基本问题问答(概念)算法分析:教材典型例题算法思路简述算法设计:严题集一题多解,典型题详细分析重点题分析:严每章题集已经考题,相似题数据结构笔记特点:实用,详细,易于理解(用通俗语言描述复杂问题),针对性强,覆盖面广,定期公布,题目累加![center]第一章绪论[/center]一、基本问题问答:1、什么叫数据结构?如何理解“数据结构”?如何树立数据结构的学习体系?广义上的数据结构指的是:逻辑结构和物理结构。

狭义上的数据结构专指逻辑结构,就是元素间的逻辑关系,主要类型有:集合型,线性结构,树型,图型!整个数据结构的课程就是围绕着以上几种数据类型展开的,加上基于这些结构的基本操作:插入,删除,查找,取元素,取长度等等。

另外,还有基于这些数据结构的较为复杂的算法:查找和排序。

在严老师和其他很多的数据结构教材中都把查找和排序作为了一个独立的部分,这一部分实际上主要在探讨算法,而不在是结构本身了。

算法的概念将在后面提到。

2、数据的物理结构和逻辑结构定义数据结构,当计算机程序运行时,程序就按照定义给这些数据分配了空间。

而数据定义,是在定义其逻辑结构。

以链表为列,在实际定义时,一个个的结点,由于其指针域可以指向另一个结点,那么依靠这种指向关系,就可在逻辑上建立起一条链状结构!但是,在实际的程序执行时,是不会有这样的一条链的,而是通过在一个结点空间的某个空间内填入了下一个结点的地址!这样的每个有数据和地址的结点,才是其物理结构。

3、算法的概念、分析,算法时间复杂度的含义及分析算法就是解决问题的方法或策略。

一个算法好与坏的评价标准是:正确,可读,健壮,效率高,空间省!设计算法时,应该按照严教材上关于类C(或类P)语言的描述来作,格式为:status fun_name{//算法说明for{ .... };//典型功能及复杂语句后加注释}//fun_name注意写好注释!不求多,但求精!时间复杂度:分析算法效率的重要工具。

老师整理的数据结构笔记

老师整理的数据结构笔记

数据结构内容:1、数据结构理论、线性表、单链表、双链表、内核链表2、栈(顺序栈、链栈)和队列(顺序队列、链队列)3、树和二叉树4、查找(顺序查找、折半查找、hash表)和排序(直接插入排序、折半排序、链表排序、shell排序、冒泡排序、快速排序)5、小项目:航空查询系统第一天:数据结构任务:将实际中的问题转化为计算机可以处理的问题。

原子类型(不可以再分):(int、char、float、.....);结构类型:结构体,用户可以根据自己的需要去定义;逻辑结构:线性(线性表、链表)和非线性(树、图)存储结构:顺序存储(数组)-->数据的存储结构可以直接反映它的逻辑结构优点:只要知道存储的首地址、可以实现随机访问缺点:1、需要开辟成片的空间;2、在插入和删除时,会造成数据成片的移动链式存储(链表)--->通过存储地址的指针表示数据元素间的逻辑关系索引存储:采用目录结构的方式,不断缩小查找范围hash表存储:是一种查找效率最高的存储方式。

算法:查找、排序、插入、删除、修改算法定义:解决问题的步骤算法评价的标准:1、时间复杂度2、空间复杂度,指的是除了运算数据本身以外的额外空间3、算法的可读性(程序的风格和编程规范)和可维护性(代码的封装);线性表:除了第一个元素和最后一个元素,对于中间的任何一个元素有且仅有一个直接前驱和一个直接后继。

顺序表:线性表的顺序存储在算法的实现中,对于每一个操作步骤,尽量都封装成一个函数,来提高代码的可读性。

//=====================顺序表算法===============================typedef struct list //顺序表的类型//{datatype data[maxsize]; //为顺序表的开辟存储空间//int last; //当前顺序表最后一个元素的下标,用来说明顺序表的长度//}sqlist; *sqlink; // 顺序表说明符sqlist ==> struct listsqlink ==> struct list *sqlink L;L=(sqlink)malloc(sizeof(sqlist));//初始化L->last=-1//线性表的插入算法;1、在插入之前判断表是否为满2、判断插入点是否合法3、顺序移位4、插入数据5、将L->last++//线性表的删除算法;1、在删除之前判断表是否为空2、判断删除点是否合法3、顺序移位,将要删除的元素覆盖4、将L->last--。

数据结构复习笔记整理

数据结构复习笔记整理

最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删 除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。
所谓算法(Algorithm)是对问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示 一个或多个操作。
所谓算法复杂度: T (n) = O(f(n)) 称 T (n) 为算法的渐近时间复杂度(Asymptotic Time Complexity),简称时间复杂度。O 是数量级 的符号。 下面我们探讨一下如何估算算法的时间复杂度 算法 = 控制结构 + 原操作(固有数据类型的操作) 算法的执行时间=原操作(i)的执行次数×原操作(i)的执行时间 算法的执行时间与原操作执行次数之和成正比
队满:front=(rear+1)%m 3.串长、空串、空白串、串连接、子串定位(模式匹配)等是何意?
串中字符的数目 n 称为串的长度。0 个字符的串成为空串,它的长度为 0。 串的串连是将一个串紧接着存放在另一个串的后面而成的一个新串。串的连接满足结合率,不满足交换率
串的模式匹配问题:子串的定位操作通常称为串的模式匹配。通常思想是从主串 S 的第 pos 个字符起 和模式的第一个字符比较,若相等则继续逐个比较后继字符,否则从主串的下一个字符起再重新和模式的 字符比较。依此类推,直至模式 T 中的每个字符依次和主串 S 中的一个连续的字符序列相等,则称匹配成 功,函数值为和模式 T 中第一个字符相等的字符在主串 S 中的序号,否则称模式不匹配,函数值为 0。 1. 稀疏矩阵、特殊矩阵的含义?为什么要对矩阵进行压缩存储?
while(i<j) {
while(L->data[i]<0 && i<j) i++; //从前向后找正数

(完整word版)数据结构复习要点(汇总版),推荐文档.docx

(完整word版)数据结构复习要点(汇总版),推荐文档.docx
想要计算机处理数据, 就必须把数据的逻辑结构映射为数据的存储结构。 逻辑结构可以映射为以下两种存储结构:
1.顺序存储结构 :把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。不要求逻辑上相邻的数据元素物
3.树形结构 :结构中的数据元素之间存在“一对多“的关系。若数据为非空集,则除了第一
个元素 (根)之外,其它 每个数据元素都只有一个直接前驱, 以及多个或零个 直接后继。
4.图状结构 :结构中的数据元素存在“多对多”的关系。若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
结点定义:
typedef int datatype;//结点数据类型,假设为int
typedef struct node {//结点结构
datatype data;
struct node *next;//双向链表还应加上*previous
3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也
叫做属性。)
4.数据结构 :数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
2 / 13
插入:p->next=head->next;head->next=p;
输出:printf(“%d”,p->data);
删除:q=p->next;p->next = q->next ;free(q);

(word完整版)非常实用的数据结构知识点总结,推荐文档

(word完整版)非常实用的数据结构知识点总结,推荐文档

数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。

·线性结构:一对一关系。

·线性结构:多对多关系。

·存储结构:是逻辑结构用计算机语言的实现。

·顺序存储结构:如数组。

·链式存储结构:如链表。

·索引存储结构:·稠密索引:每个结点都有索引项。

·稀疏索引:每组结点都有索引项。

·散列存储结构:如散列表。

·数据运算。

·对数据的操作。

定义在逻辑结构上,每种逻辑结构都有一个运算集合。

·常用的有:检索、插入、删除、更新、排序。

数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

·结构类型:由用户借助于描述机制定义,是导出类型。

抽象数据类型ADT:·是抽象数据的组织和与之的操作。

相当于在概念层上描述问题。

·优点是将数据和操作封装在一起实现了信息隐藏。

程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。

算法取决于数据结构。

算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。

评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。

时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。

渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。

评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。

算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

(完整word版)大学数据结构期末知识点重点总结(考试专用)

(完整word版)大学数据结构期末知识点重点总结(考试专用)

第一章概论1。

数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算2。

数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R)结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系3.数据类型a。

基本数据类型整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b。

复合数据类型复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)5。

四种基本存储映射方法:顺序、链接、索引、散列6。

算法的特性:通用性、有效性、确定性、有穷性7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化8.渐进算法分析a.大Ο分析法:上限,表明最坏情况b.Ω分析法:下限,表明最好情况c.Θ分析法:当上限和下限相同时,表明平均情况第二章线性表1.线性结构的基本特征a.集合中必存在唯一的一个“第一元素”b。

集合中必存在唯一的一个“最后元素"c.除最后元素之外,均有唯一的后继d。

除第一元素之外,均有唯一的前驱2.线性结构的基本特点:均匀性、有序性3。

顺序表a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度b。

线性表中任意元素的存储位置:Loc(ki)= Loc(k0)+ i * L(设每个元素需占用L个存储单元)c. 线性表的优缺点:优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样缺点:空间难以扩充d.检索:ASL=【Ο(1)】e。

(精品word)数据结构期末复习知识点(兼容版)(良心出品必属精品)

(精品word)数据结构期末复习知识点(兼容版)(良心出品必属精品)

《数据结构》期末复习复习要点:第一章1.相关基本概念:数据、数据元素(基本单位)、数据项(最小单位)、算法及其特征等;◎数据:所有能输入到计算机中并被计算机程序处理的符号总称。

◎数据元素:基本单位。

◎数据项:最小单位。

◎算法特征(5点):有穷性;确定性;可行性;输入;输出。

2.逻辑结构、存储结构(物理结构)及其类型;◎逻辑结构有四种基本类型:集合、线性结构、树形结构和网状结构。

◎数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。

◎注:期中考题目数据结构分为两大类,即为逻辑结构和存储结构。

其中逻辑结果又分为线性结构和非线性结构,存储结构一共有四种(顺序、链接、索引、散列)。

3.算法分析:语句频度(执行次数)计算、时间和空间复杂度分析。

表示方法◎语句频度:直接写次数。

◎时间复杂度:O(执行次数),如:O(n)。

◎空间复杂度:O(所需空间)第二章1.顺序表(数组)插入、删除、有序表合并算法及其移动次数计算;数据元素序号 1 2 3 4 5 6 7 8 表示 L.elem[0] [1] [2] [3] [4] [5] [6] [7]◎顺序表插入算法思想:如果要在序号5前插入元素e,需要将序号5~8向后移动一个位置。

▲移动次数为4次,公式n-i+1◎顺序表删除算法思想:如果要删除序号5元素,需要将6~8依次向前移动一位▲移动次数为3次,公式n-i◎有序表合并LA = (3,5,8,11)LB = (2,6,8,9,11,15,20)则LC = (2,3,5,6,8,8,9,11,11,15,20)算法思想(以非递减为例):La和Lb非递减排列,La与Lb中元素逐个比较,较小的先插入Lc中。

▲注:非递减是指递增排序,但元素有可能相等,与之相对的有非递增排序。

▲移动次数为(La.length + Lb.length)2.链表(有无头节点、单双、循环)插入(前、后)、删除(前、本身、后)的指针挂接、建立(不带头节点)算法。

数据结构读书笔记【第一章】

数据结构读书笔记【第一章】

数据结构读书笔记【第⼀章】这⼀部分内容是关于数据结构的⼀些基础概念,这有助于我们理解后续的内容:【1】数据:对客观事物的符号表⽰,在计算机中是指所有能输⼊到计算机处理的符号的总称。

【2】数据元素:数据组成的基本单位,元素⼀般作为数据结构中的⼀个整体考虑和处理,可能包含多个数据项,例如表中的⼀条记录为⼀个数据元素,但含有多个数据项。

【3】数据对象:指的是性质相同的数据元素组成的集合,是数据的⼀个⼦集。

【4】数据结构:相互之间存在⼀种或多种特定关系的数据元素的集合。

【逻辑结构】这⾥元素之间的关系可以分为⼏类:第⼀种是集合关系,第⼆种是线性的关系,单链表就是这样⼀种关系,第三种和第四种分别是树形关系和图形关系,也就是对应于树和图。

上⾯描述这么多,最关键就是为了说明数据和关系两个概念。

这⾥的关系指的是逻辑关系,例如两个数据a,b按照复数的逻辑关系组织且a为实部,b为虚部。

【存储结构】有了数学上的数据结构概念,我们还需要把数据映射到计算机中表⽰(存储结构),也就是将数据和关系⽤计算机语⾔来表⽰出来,⼀个位串可以表⽰⼀个数据元素(8位可以⽤来表⽰字符),通常称这个位串为元素,如果⼀个位串包含多个数据项,对应于每个数据项的被称为数据域。

根据不同表⽰⽅法可以得到顺序和链式两种存储结构。

总结上⾯的内容就是⼀个算法的设计取决于逻辑结构,算法的实现依赖存储结构。

【数据类型】为了⽅便表⽰存储结构,⾼级程序语⾔借助数据类型来对它进⾏描述。

数据类型的定义是⼀个值的集合和这个值集上⼀组操作的总称。

根据值的不同特性,数据类型⼜可以分为两类:⼀类是⾮结构的“原⼦类型”(整形、指针),另⼀类是”结构类型“(数组),结构类型的值是若⼲成分按照某种结构组成,这⾥的成分既可以是结构的也可以是⾮结构的。

由于数据结构可以看作是⼀组具有相同结构的值,所以结构类型也可以看作是数据结构和定义在上⾯的⼀组操作来构成的。

数据类型不仅可以表⽰存储关系,还可以定义⼀组该类型的操作。

数据结构知识点笔记

数据结构知识点笔记

数据结构知识点笔记一、数据结构的概念数据结构是计算机科学中一门重要的学科,它研究如何组织和存储数据,以便高效地访问和操作。

数据结构可以分为物理结构和逻辑结构两个层次。

物理结构指数据在计算机内存中的存储方式,而逻辑结构则指数据之间的逻辑关系。

二、常用的数据结构1. 数组(Array)数组是最基本的数据结构之一,它以连续的存储空间来保存相同类型的数据。

数组的特点是可以通过下标快速访问元素,但插入和删除操作较慢。

2. 链表(Linked List)链表是一种动态数据结构,它通过指针将一组节点串联起来。

链表的特点是插入和删除操作效率高,但访问元素需要遍历整个链表。

3. 栈(Stack)栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。

栈主要用于函数调用和表达式求值等场景。

4. 队列(Queue)队列是一种先进先出(FIFO)的数据结构,只能在队列的一端进行插入操作,在另一端进行删除操作。

队列主要用于任务调度和缓冲区管理等场景。

5. 树(Tree)树是一种非线性的数据结构,由父节点和子节点组成。

树常用于组织和管理具有层级关系的数据,如文件系统和数据库索引等。

6. 图(Graph)图是一种由节点和边组成的数据结构,节点表示数据,边表示节点之间的关系。

图广泛应用于网络分析和路径搜索等领域。

三、常见的数据结构操作1. 插入(Insert)插入操作将新的数据元素加入到数据结构中的特定位置。

不同的数据结构插入操作的复杂度各不相同,需要根据具体情况选择合适的数据结构。

2. 删除(Delete)删除操作将指定的数据元素从数据结构中移除。

和插入操作一样,删除操作的复杂度也依赖于具体的数据结构。

3. 查找(Search)查找操作用于在数据结构中寻找指定值的元素。

不同的数据结构采用不同的查找算法,如线性查找、二分查找和哈希查找等。

4. 排序(Sort)排序操作将数据结构中的元素按特定规则重新排列。

排序算法可以分为比较排序和非比较排序两种类型,如冒泡排序、快速排序和归并排序等。

数据结构学习笔记

数据结构学习笔记

数据结构学习笔记(转载)数据结构笔记(1)第一章概论1.数据:信息的载体,能被计算机识别、存储和加工处理。

2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。

3.数据结构:数据之间的相互关系,即数据的组织形式。

它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。

3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。

常用的运算:检索/插入/删除/更新/排序。

4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

数据的存储结构是逻辑结构用计算机语言的实现。

5.数据类型:一个值的集合及在值上定义的一组操作的总称。

分为:原子类型和结构类型。

6.抽象数据类型:抽象数据的组织和与之相关的操作。

优点:将数据和操作封装在一起实现了信息隐藏。

7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。

8.数据的逻辑结构,简称为数据结构,有:(1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。

(2)非线性结构,一个结点可能有多个直接前趋和后继。

9.数据的存储结构有:1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。

2)链接存储,结点间的逻辑关系由附加指针字段表示。

3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。

4)散列存储,按结点的关键字直接计算出存储地址。

10.评价算法的好坏是:算法是正确的;执行算法所耗的时间;执行算法的存储空间(辅助存储空间);易于理解、编码、调试。

11.算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。

记为O(n)。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nl og2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

数据结构课堂笔记(di第一~三章)(完整版)

数据结构课堂笔记(di第一~三章)(完整版)

一、数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

它是计算机程序加工的“原料”。

二、数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

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

数据项是数据的不可分割的最小单位。

三、数据对象:是性质相同的数据元素的集合,是数据的一个子集。

四、数据机构:是相互之间存在一种或多种特定关系的数据元素的集合。

在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。

根据数据元素之间关系的不同特性,通常有下列4类基本结构:(1)集合------------数据元素仅有同属一个关系的关系(2)线性结构----------结构中数据元素之间存在一个对一个的关系(3)树形结构------------结构中的数据元素之间存在一个对多个的关系(4)图状结构或网状结构-----------结构中的数据元素之间存在多个对多个的关系五、元素在存贮结构(1)物理结构(存储结构):它包括数据元素的表示和关系。

(2)逻辑结构六、位bit:在计算机中表示信息的最小单位是二进制的一位七、元素element/节点node:位串八、数据域:当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串九、数据元素之间的关系在计算机中有两种不同的表示方法,顺序映像和非顺序映像,并由此得到两种不同的存储结构:顺序存储结构(借助元素在存储器中的相对位臵来表示数据元素之间的逻辑关系)和链式存储结构(借助指示元素存储地址的指针表示数据元素之间的逻辑关系)。

类C语言语句:(1)预定义常量和类型:#define TRUE 1 FALSE 0#define OK 1 ERROR 0#define INFEASIBLE -1 OVERFLOW -2(2)数据元素类型ElemType(3)赋值语句:简单赋值变量名=表达式;串联赋值变量名1=变量名2=…=变量名k=表达式;成组赋值(变量名1,…,变量名k)=(表达式1,…,表达式k);结构名=结构名;结构名=(值1,…,值k);变量名[]=表达式;变量名[起始下标..终止下标]= 变量名[起始下标..终止下标];交换赋值:变量名<->变量名;条件赋值:变量名=条件表达式?表达式T:表达式F;(4)选择语句有条件语句1 if(表达式)语句;条件语句2 if(表达式)语句;else语句;开关语句1 switch(表达式){case值1:语句序列1;break;…case值n:语句序列n;break;default:语句序列n+1;}开关语句2 switch(表达式){case条件1:语句序列1;break;…case条件n:语句序列n;break;default:语句序列n+1;}(6)循环语句有:for语句 for(赋初值表达式序列;条件;修改表达式序列)语句;while语句 while(条件)语句;do-while语句 do{语句序列;}while(条件);(7)结束语句有函数结束语句 return表达式;return;case结束语句 break;异常结束语句 exit(异常代码);(8)输入和输出语句有:输入语句 scanf([格式串],变量1,…,变量n);输出语句 printf([格式串],表达式1,…,表达式n);通常省略格式串。

数据结构整理笔记

数据结构整理笔记

数据结构整理笔记数据结构与算法数据结构:数据的组成形式(数据是以什么样的形式组织起来的,数组、链表、队列、树、图等)算法(注:强调的是数据结构与算法中的算法,狭义算法):对所存储数据的操作(操作指的是对于所存数据有关问题,求解最终答案的过程)的⽅法,例:[1、2、3、4、5]中的最⼤值,求得最⼤值的⽅法(⼀系列操作)就是算法书籍推荐数据结构概述(教材选⽤严蔚敏、吴伟民,该书程序是伪算法具体的程序是⾼⼀凡,西电的,⼤⽜,只有程序。

还有⼀本书,台湾的黄国瑜⾃⼰写的只有思路,程序是另外⼀个合作的清华的写的,可惜很多错的。

)学完数据结构之后会对⾯向过程的函数有⼀个更深的了解,有本通俗易懂的数据结构的书《⼤话数据结构》⽤来⼊门很不错。

数据结构的概述定义我们如何把现实中⼤量⽽反复的问题以特定的数据类型(个体的数据类型)和特定的存储结构(个体间的相互关系)保存到主存储器(内存)中,以及在此基础上为实现某个功能(⽐如查找某个元素,删除某个元素,对所有元素进⾏排序)⽽执⾏的相应的操作,这个相应的操作也叫做算法。

数据结构=个体+个体的关系算法=对存储数据的操作狭义:数据结构是专门研究数据存储的问题数据的存储包含两⽅⾯:个体的存储 + 个体关系的存储⼴义:数据结构既包含数据的存储也包含数据的操作对存储数据的操作就是算法算法狭义:算法是和数据的存储⽅式密切相关⼴义:算法和数据的存储⽅式⽆关,这就是泛型思想算法的真正学法:很多算法你根本解决不了因为很多都属于数学上的东西,所以我们把答案找出来,如果能看懂就⾏,但是⼤部分⼈⼜看不懂,分三步,按照流程,语句,试数。

这个过程肯定会不断地出错,所以不断出错,不断改错,这样反复敲很多次,才能有个提⾼。

实在看不懂就先背会。

衡量算法的标准:(1) 时间复杂度⼤概程序要执⾏的次数,⽽并⾮是执⾏的时间(因为同⼀程序在不同机器上执⾏的时间是不⼀样的,有差异)(2) 空间复杂度算法执⾏过程中⼤概所占⽤的最⼤内存(3) 难易程度(主要是应⽤⽅⾯看重)(4) 健壮性(不能别⼈给⼀个⾮法的输⼊就挂掉)数据结构的地位:数据结构是软件中最核⼼的课程程序 = 数据的存储 + 数据的操作 + 可以被计算机执⾏的语⾔泛型对于同⼀种逻辑结构,⽆论该逻辑结构的物理存储是什么样⼦的,我们可以对它执⾏相同的操作。

(完整word版)数据结构知识点全面总结—精华版

(完整word版)数据结构知识点全面总结—精华版

第1章绪论内容纲要:◆ 数据构造研究的内容。

针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。

数据构造涵盖的内容:◆ 根本看法:数据、数据元素、数据对象、数据构造、数据种类、抽象数据种类。

数据——全部能被计算机鉴别、储藏和办理的符号的会集。

数据元素——是数据的根本单位,拥有完满确定的实质意义。

数据对象——拥有相同性质的数据元素的会集,是数据的一个子集。

数据构造——是相互之间存在一种或多种特定关系的数据元素的会集,表示为:Data_Structure= 〔 D, R 〕数据种类——是一个值的会集和定义在该值上的一组操作的总称。

抽象数据种类——由用户定义的一个数学模型与定义在该模型上的一组操作,它由根本的数据种类组成。

◆ 算法的定义及五个特点。

算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入变换为输出的计算步骤。

算法的根本特点:输入、输出、有穷性、确定性、可行性◆ 算法设计要求。

①正确性、②可读性、③强壮性、④效率与低储藏量需求◆ 算法解析。

时间复杂度、空间复杂度、牢固性学习要点:◆ 数据构造的“三要素〞:逻辑构造、物理〔储藏〕构造及在这种构造上所定义的操作〔运算〕。

◆ 用计算语句频度来估计算法的时间复杂度。

第二章线性表内容纲要:◆ 线性表的逻辑构造定义,对线性表定义的操作。

线性表的定义:用数据元素的有限序列表示◆ 线性表的储藏构造:次序储藏构造和链式储藏构造。

次序储藏定义:把逻辑上相邻的数据元素储藏在物理上相邻的储藏单元中的储藏构造。

链式储藏构造 : 其结点在储藏器中的地址是随意的,即逻辑上相邻的数据元素在物理上不用然相邻。

经过指针来实现!◆ 线性表的操作在两种储藏构造中的实现。

数据构造的根本运算:更正、插入、删除、查找、排序1)更正——经过数组的下标即可接见某个特定元素并更正之。

核心语句 :V[i]=x;次序表更正操作的时间效率是O(1)2)插入——在线性表的第 i 个地址前插入一个元素实现步骤:①将第 n 至第 i 位的元素向后搬动一个地址;②将要插入的元素写到第i 个地址;③表长加1。

2023天勤计算机数据结构高分笔记

2023天勤计算机数据结构高分笔记

第一部分:数据结构基础概念1. 数据结构的介绍数据结构是计算机科学中的重要概念,它主要研究数据的存储和组织方式。

在计算机程序设计中,数据结构的选择直接影响了程序的性能和效率。

对数据结构的理解和掌握对于计算机专业的学生来说至关重要。

2. 数据的逻辑结构和物理结构数据的逻辑结构指的是数据元素之间的逻辑关系,而数据的物理结构则指的是数据在计算机中的存储方式。

掌握数据的逻辑结构和物理结构对于设计高效的程序至关重要。

3. 抽象数据类型(ADT)抽象数据类型是指一个数学模型以及定义在此模型上的一组操作。

它将数据的逻辑结构和操作封装起来,提供给用户一个抽象的数据视图,用户不需要关心数据的物理结构和具体实现方式。

常见的抽象数据类型包括栈、队列、链表、树等。

第二部分:线性表4. 线性表的概念线性表是最简单、最常用的一种数据结构,它包括线性表的定义、性质和操作。

5. 线性表的顺序存储结构线性表的顺序存储结构是将数据集中存储在一片连续的存储空间中。

这种方式的优点是存取速度快,但缺点是空间利用不灵活、插入和删除操作不方便。

6. 线性表的链式存储结构线性表的链式存储结构是通过指针将数据元素存储在一些列不连续的存储空间中。

这种方式的优点是空间利用灵活、插入和删除操作方便,但缺点是存取速度慢。

第三部分:栈和队列7. 栈的定义和特点栈是一种特殊的线性表,它只允许在表的一端进行插入和删除操作。

栈的特点是后进先出(LIFO),操作简单高效。

8. 栈的顺序存储结构和链式存储结构栈可以通过数组实现顺序存储结构,也可以通过链表实现链式存储结构。

两种方式各有优缺点,可以根据具体情况选择。

9. 队列的定义和特点队列也是一种特殊的线性表,它允许在表的一端进行插入操作,另一端进行删除操作。

队列的特点是先进先出(FIFO),常用于实现任务调度等场景。

第四部分:树和图10. 树的基本概念树是一种重要的非线性数据结构,它有树的定义、特点、操作等内容。

数据结构笔记

数据结构笔记

数据结构笔记数据结构是计算机科学中非常重要的概念,它涉及到如何组织和存储数据以便于有效地访问和操作。

在本篇笔记中,我将详细介绍数据结构的基本概念、常见的数据结构类型以及它们的应用场景。

一、数据结构的基本概念1. 数据结构的定义:数据结构是指一组数据元素以及定义在此数据元素上的一组操作。

2. 数据元素:数据结构中的基本单元,可以是一个数字、一个字符或者一个对象。

3. 数据项:数据元素中的一个属性或字段,可以是整数、浮点数、字符等等。

4. 数据结构的操作:对数据结构中的数据元素进行插入、删除、查找、修改等操作的方法。

二、常见的数据结构类型1. 数组(Array):一组按照顺序存储的相同类型的数据元素,可以通过索引来访问元素。

2. 链表(Linked List):一组通过指针连接的数据元素,可以动态地插入和删除元素。

3. 栈(Stack):一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。

4. 队列(Queue):一种先进先出(FIFO)的数据结构,可以在队尾插入元素,在队头删除元素。

5. 树(Tree):一种非线性的数据结构,由节点和边组成,用于表示层次关系。

6. 图(Graph):一种包含节点和边的数据结构,用于表示多对多的关系。

7. 堆(Heap):一种特殊的树结构,用于高效地找到最大或最小值。

8. 散列表(Hash Table):一种根据关键字直接访问数据的数据结构,通过散列函数将关键字映射到表中的位置。

三、数据结构的应用场景1. 数据库系统:数据结构用于存储和组织数据库中的数据,如B树、哈希表等。

2. 图像处理:数据结构用于表示和处理图像数据,如二维数组、链表等。

3. 编译器设计:数据结构用于存储和处理源代码,如符号表、语法树等。

4. 网络路由算法:数据结构用于存储和搜索路由表,如图、堆等。

5. 算法设计:数据结构是算法设计的基础,不同的数据结构适用于不同的算法问题。

总结:数据结构是计算机科学中的基础概念,它涉及到如何组织和存储数据以便于高效地访问和操作。

数据结构笔记

数据结构笔记

数据结构笔记本篇内容是根据的学习笔记,本篇笔记是⽤markdown根据编写,copy到博客有些格式微调,如发现错误望留⾔指正,不胜感激!如有侵权请联系我删除:如想转载请注明出处谢谢!ps:本篇篇幅较长,请慢慢享⽤!数据结构概述数据结构定义我们如何把现实中⼤量⽽复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(⽐如查找某个元素,删除某个元素,对元素进⾏排序等)⽽执⾏的相应操作,这个相应的操作也叫算法。

数据结构 = 个体的存储 + 个体的关系存储算法 = 对存储数据的操作算法定义通俗的说算法是解题的⽅法和步骤衡量算法的标准1. 时间复杂度:程序⼤概要执⾏的次数,⽽⾮执⾏的时间。

2. 空间复杂度:程序执⾏过程中⼤概所占⽤的最⼤内存空间。

3. 难易程度:⽤易懂,避免过于复杂。

4. 健壮性数据结构的地位数据结构是软件中最核⼼的课程程序=数据的存储+数据的操作+可以被计算机执⾏的语⾔预备知识1. 指针指针的重要性:指针是C语⾔的灵魂定义:地址:内存单元的编号,从0开始的⾮负整数指针:指针就是地址,地址就是指针;指针变量是存放内存单元地址的变量;指针的本质是⼀个操作受限的⾮负整数。

分类:基本类型的指针;指针和数组的关系2. 结构体为什么会出现结构体:为了表⽰⼀些复杂的数据,⽽普通的基本类型变量⽆法满⾜要求;定义:结构体是⽤户根据实际需要⾃⼰定义的复合数类型;如何使⽤结构体//定义结构体struct Student{int sid;char name[200];int age;};//整体赋值,类似于Java中new类的构造函数struct Student st = {1001,"zhangsan",18};//单个赋值st.id=1001;strcpy(,"zhangsan");st.age=18;//通常使⽤指针的⽅式赋值struct Student *pst;//pst所指向的结构体变量中的sid这个成员pst->sid=1001;strcpy(pst->name,"lisi");pst->age=19;注意事项:结构体变量不能算术计算,但是可以赋值;普通结构体变量和结构体指针变量作为函数传参的问题,推荐使⽤传递结构体指针的⽅式,这样效率⾼节约内存。

(完整word版)数据结构(C++版)知识点及相应题目

(完整word版)数据结构(C++版)知识点及相应题目

第一章知识点P3 ·数据结构从逻辑上划分为:(1)线性结构(2)非线性结构: 树型结构和图型结构P4 ·从存储结构(物理结构)上划分:(1)顺序结构:所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存放到计算机内存中仍然相邻(2)链式结构:所有元素存放在可以不连续的存储单元中,但元素之间的关系可以通过地址确定,逻辑上相邻的元素存放到计算机内存后不一定是相邻的。

P5 ·算法的五大特性:(1)输入(2)输出(3)有穷性(4)确定性(5)可行性(可执行)P6 ·算法分析的任务/方面:(1)时间复杂度(重点是计算时间复杂度[P9 1-5 P10 1-12)(2)空间复杂度(性):一个算法在执行时所占有的内存开销,称为空间频度课后部分习题解释:1-2简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

◆ 数据:指能够被计算机识别、存储和加工处理的信息载体。

◆ 数据元素:就是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理◆ 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

◆ 数据结构:指的是数据之间的相互关系,即数据的组织形式。

一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。

◆ 逻辑结构:指各数据元素之间的逻辑关系。

◆ 存储结构:就是数据的逻辑结构用计算机语言的实现。

◆ 线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表就是一个典型的线性结构。

◆ 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前驱和直接后继。

补充习题⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

【解答】数据元素⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。

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

张东1145105494简介:1、算法+数据结构=程序2、数据结构3、数据、数据元素(基本单位)、数据项(最小单位)4、数据结构在计算机中的映像是存储结构;数据元素在计算机中的映像是结点;数据项在计算机中的映像是数据域;逻辑结构在计算机中的映像是关系。

5、四种存储方式6、抽象数据类型1)按不同特性分类●原子类型●固定聚合类型●可变聚合类型2)基本操作●init 构造●destroy 销毁●get 返回●put 改变●isasc 升序●isdesc 降序●Max 最大●min 最小7、时间复杂度技巧1)对于循环程序(for),最大执行次数即为for的乘积。

简言之,程序有多少for出现,就是n的多少次方2)对于顺序结构,可用“求和取最大值“法则3)对于循环程序(while),一般结果是O(log M N)4)若是一般的赋值语句,时间复杂度必为O(1)5)对于选择结构的程序,一般时间复杂度为O(1)加:自加自减++ ——x=2;y=x++;y=++x;第二章线性表1、表长相当于元素个数2、线性表一般下标是1—n,故当n=0时,表示线性表为空表3、list 表示线性表elem 元素length 表示求长度(线性表)locate 定位(位置)insert 插入(元素之前)delete 删除void 空类型(写程序必写)顺序结构(链表相反)优势:随机存取劣势:在做插入或删除时需要移动大量的元素malloc 分配一个连续空间realloc 将已分配的空间进行重新分配顺序表插入时所需移动的元素次数期望值是n/2删除时所需移动的元素次数期望值是(n-1)/2删除:模板语句:q=&(L.elem[i-1]) 表示顺序表中插入元素或者删除元素的地址加:逻辑运算符:!非&&与(一假即假)||或(一真即真)逻辑值:真(1)假(0)比较运算符:< >= <= == !=若在if或者while后面的括号中出现逻辑表达式或者比较表达式,那么结果只能为真或假。

模板语句:if(i<1||i>L.length)return ERROR;表示在顺序表中,删除元素,若输入的删除地址不符合题意,则返回错误。

2、链式结构1)结点=数据域(元素)+指针域(指向后继结点)单链表2)一般在第一个元素之前,会创建一个头结点(头指针),用head表示。

指向第一个元素head->NULL 表示空表head->next=NULLclear 重置create 创建模板语句p=L->next 表示单链表中、头结点为L指向下一个结点N=(linklist)malloc(sizeof(LNode))表示在单链表中生成新结点技巧:做单链表的插入操作1)判断单链表的存在与否2)找到插入位置p=p->next j++3)生成新结点malloc4)赋值p->data=e(插入的元素)5)插入元素单链表删除操作1)2)同插入3)删除结点模板输出逆序顺序for(i=0;i<n;i++) 逆序for(i=n;i>0;i--)循环链表1、判断单链表的最后一个结点,表示方式是指针域为空;判断循环链表的最后结点,表示方式是指针域指向第一个结点2、不需要头结点3、循环链表为空,表达方式为L->next=L双向链表1、插入2、删除3、三部分:data next priorlinklist表示链式结构的线性表第三章栈和队列1、操作受限的线性表栈1、先进后出后进先出2、表头-栈底表尾-栈顶3、必须要有栈顶指针top系列:12345进栈出栈:1234554321 3452124351 412354、stack 栈push 进栈pop 出栈empty 判断是否为空5、当top=0/-1时,表示为空栈top==base(指向栈底指针)top-base=0stacksize=N 表示栈中元素个数模板语句1)S.top==S.base 设置栈顶栈底指针2)S.Stacksize=STACK_INIT_SIZE6、入栈(插入):栈满(s.top-s.base>=s.stacksize);s.top++;*s.top=e出栈(删除):栈空(s.top==s.base);s.top--;e=*s.top7、加:双栈共享一个空间栈:1,2空间:A[m]1)栈底在空间两端2)栈空:top1==0 top2==m-1 3)栈满:top1+1=top2中缀—后缀(前缀)1)将每一步运算加括号2)将每一括号内的运算符放在所在的括号后(前)3)将括号全部去除4)必须保证一个括号内只有一个运算符加:顺序结构、选择结构、循环结构选择结构:if…elseif(x>=0) y=1;else y=2;递归调用1、每次运行都是相似的操作2、每一项的值都由前一项的值决定3、必须要有一个基础值队列1、先进先出2、在队尾处进行插入、在队头处进行删除3、基本操作1)Queue2)clear 清空3)gethead 取队头元素4)Enqueue 入队Dequeue出队5)queuetraverse 遍历队列(查询队列中每一个元素)模板:Q.front->next==NULL 表示初始化队列Q.front==Q.rear 表示队列为空e=Q.front->next->data 表示队头元素若将队列放入数组base[]中:1、入队:base[rear]=e;rear++;2、出队1)e=base[front];2)front=front+1;注意:入队相当于尾指针自加1,出队相当于头指针自加1。

循环队列1、队空:Q.front==Q.rear2、入队:base[rear]=e;rear=(rear+1)%M;M:循环队列元素个数3、出队:e=base[front];front=(front+1)%M;4、队满front==(rear+1)%M队空:front==rear求循环队列的元素个数(长度)(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE第四章串1、空串空格串“”“”2、字符位置:所在字符串的位置子串位置:子串第一个字符在主串中的位置3、串相等1)长度相等2)元素相同●非平凡子串即非空非主串的子串●任意串为本身子串、空串为任意串子串●一个串的子串个数为n*(n+1)/2+1(空串)●一个串的真子串个数为n*(n+1)/2-1(本身)加:ASCII码0 ---48 0—9(48--57)A---65 A—Z(65--90)a---97 a—z (97--122)concat 串的连接compare 串的比较(ASCII)substring 求子串(表示从左边第N个字符开始截取M 个字符)index 求子串的位置(POS表示从左边第pos个字符开始检索)顺序:1、定长1)0号单元存放的是串的长度2、堆分配1)实际串长和数组长度相等加:数据类型1)整型intint a;a=1; a=123;2)浮点型floatfloat a; a=1.23)字符型charchar ch;ch=’i’; ch=’1’;模式匹配1)若主串长度n,模式串长度为m,则时间复杂度为O(m*n)2)模板语句:if(s[i]=t[j]) {++i; ++j}else {i=i-j+2; j=1}if(j>t[0]) return i-t[0];else return 0;S: abbcbacbabc 11T:abc 3男朋友:9KMP:3Q:模式串p=’abaabcac’,next函数值序列为?t=’abcaabbcabcaabdab’next 01112231123456712第五章数组广义表1、二维数组2、元素个数:行*列3、已知首地址a0和每个数组元素所占用的空间l,求任意数组元素的地址aiai=a0+(i)*l 下标从0开始ai=a0+(i-1)*l 下标从1开始4、二维数组1)以行为先序输入线性表aij=a00+(i*n+j)*L2)以列为先序输入线性表aij=a00+(j*m+i)*L注:二维数组为m*n,首元素为a00Q:数组A,每个元素长度3B,行i下标1—8,列j下标1—10。

首地址SA开始存储,数组按行(列)存放,元素a85的起始地址?解:按行:a85=a00+((8-1)*10+5-1))*3=SA+222按列:a85=a00+((5-1)*8+8-1)*3=SA+117Q:二维数组M的元素占用4B,行下标i(0--4),列下标j(0--5),M按行存储M35的起始地址和M按列存储?的起始地址相同。

M24 M34 M35 M44解:按行M35=a00+(3*6+5)*4=a00+92按列M34=a00+(4*5+3)*42)三维●以行为主序,则行下标变化最慢,纵下标变化最快●以纵为主序,则行下标变化最快,纵下标变化最慢列的变化速度介于行纵之间矩阵的压缩存储1、特殊矩阵1)对称矩阵aij=aji压缩方法:为每一对对称元分配一个存储空间存储:n(n+1)/2个存储空间aij:k=i(i-1)/2+j-1 (i>=j)k=j(j-1)/2+i-1 (i<j)2)三角矩阵压缩方法:同对称矩阵稀疏矩阵1、稀疏因子2、1)根据稀疏矩阵求出三元组表示形式(行、列、值。

非0)2)根据三元组求出转置矩阵的三元组性质稀疏矩阵1)求转置矩阵2)求转置矩阵的三元组3)求每一列非0元素的个数4)每一列第一个非0元素的位置=上一列第一个非0元素的位置+上一列非0元素的个数广义表1、A=() 空表,长度为0B=(e)原子e,长度1C=(a,(b,c,d))原子a和表(b,c,d)长度2D=(A,B,C)E=(a,E) 递归表2、表头元素(head):第一个元素表尾:其余的元素(tail)太关键了:表头可以是原子,也可以是子表;表尾必须是子表Q:D=(E,F)=((a,(b,c)),F)1)head(D)=E=(a,(b,c))2)tail( E)=((b,c))3)head(E)=a4)head(tail(E))=(b,c)head((b,c))=(b,c)tail((b,c))=()L=((a,c),(b,d))运算head(head(tail(L))))=bL=((),()) head(L)=()tail(L)=(())L长度是2L=((b,c),a)第六章树和二叉树1、树的概念1)根无前驱、有0个或多个后继2)子树有1个前驱、有0个或多个后继2、Q:树用广义表表示1)树→广义表●所有结点均是广义表内的元素●根结点总显示在第一位,其余后继结点将作为其下一级元素出现2)广义表→树●第一位是根结点●分成的部分作为下一层结点出现,以此类推3、术语结点、结点的度、树的度、叶子结点(度数为0)、路径(分支+结点)、双亲结点、孩子结点、祖先结点、兄弟结点、堂兄弟、子孙结点、结点层次(从1开始)、树的深度(叶子结点层次的最大值)、有序树、无序树二、二叉树1、特点:1)每个结点的分支为0、1、2 2)基本形态:5种2、性质1)在第i层上最多有2i-1个结点2)深度为k的二叉树,最多有2k-1个结点3)在任意二叉树中,n0=n2+1.特殊二叉树1、满二叉树:深度为k,必有2k-1个结点2、完全二叉树1)按顺序编号且与满二叉树一一对应2)只有最后一层叶子不满,且全部集中在左边Q:在一4层的满二叉树中,度数为2的结点个数为多少?1)满二叉树结点个数:2^4-1=152)最下面一层结点个数:2^(4-1)=8(叶子结点:度数为0)3)15-8=7或者8-1=7性质4:具有n个结点的完全二叉树的深度必为[log2n]+1Q:二叉树400结点。

相关文档
最新文档