数据结构
文章平均质量分 89
数据结构笔记
D了一天bug忘了编译
欢迎交流!
展开
-
12w字超全C语言数据结构考研笔记基础知识大总结!基于王道、严蔚敏相关丛书及网络相关资料、包含案例分析
QQ1257639681欢迎关注交流。原创 2022-07-24 17:38:00 · 894 阅读 · 5 评论 -
考研复习之数据结构笔记(一)基本概念(部分基于王道)
目录一、数据结构的基本概念1.1基本概念和术语1.数据2.数据元素3.数据对条4.数据类型5.数据结构1.2数据结构三要素1.数据的逻辑结构2.数据的存储结构 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程 序识别和处理的符号的集合。 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数 据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素, 它由学号、姓名、性别等数据项组成。原创 2022-06-22 11:26:01 · 1002 阅读 · 0 评论 -
考研复习之数据结构笔记(二)算法与算法评价、时间空间复杂度及相关计算(后续有实例分析)
目录二、算法与算法评价2.1 算法的基本概念 算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。此外,一个算法还具有下列5个重要特性:1) 有穷性:算法必须总在执行有穷步之后结束。2) 确定性:算法中每条指令必须有确切的含义,不能产生二义性。3) 可行性:算法是可行的。4) 输入:算法有零个或多个输入。5) 输出:算法有一个或多个输出。算法评价的指标:1) 正确性。1. 程序中不含语法错误;2. 程序对于精心选择的、典型、苛刻且带有刁难性的输入原创 2022-06-27 22:02:15 · 515 阅读 · 0 评论 -
考研复习之数据结构笔记(三)线性表(上)(包含基本概念、顺序表及其部分相关实现、线性表的链式表示见(下))
(1)基本概念: 线性表是具有相同数据类型的n(n > 0)个数据元素的有限序列,其中n为表长,当n = 0 时线性表是一个空表。 线性表中有唯一的“第一个”数据元素(又称表头元素)以及唯一的“最后一个”数据元素(又称表尾元素)。除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素 有且仅有一个直接后继。以上就是线性表的逻辑特性。图1.1-1 经典线性表实例(顺序表实现) 图1.1-2 经典线性表实例(循环链表实现)线性表的特点如下:•表中元素的个数有限。(存原创 2022-06-28 12:54:15 · 334 阅读 · 0 评论 -
考研复习之数据结构笔记(四)线性表(下)(线性表的链式表示:单链表、循环链表、静态链表、双向链表以及顺序表与链表的比较)
目录一、线性表的链式表示1.1 单链表(1)相关概念及特点(2)头结点(哨兵位)(3)单链表的相关实现(以下代码实现默认无哨兵位,无哨兵位更具有普适性)1.2 双向链表1.3 循环链表1.4 静态链表二、顺序表与链表的比较2.1 顺序存储和链式存储典型特点2.2 顺序表和链表的具体区别单链表指结点中只含一个指针域的链表,也称线性链表。单链表结点结构下所示,其中data为数据域,存放数据元素;next 为指针域,存放其后继结点的地址。相关特点:1.利用单链表可以解决顺序表需要大量连续存储单元的缺点。2.原创 2022-07-01 11:20:07 · 952 阅读 · 0 评论 -
考研复习之数据结构笔记(五)栈和队列(上)(包含栈的相关内容)
栈(Stack)是只允许在一端进行插入或删除操作的线性表。(仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈)图1.1-1 现实生活中栈的实例 先进后出(FILO)或后进先出(LIFO) 置空栈 取栈顶元素 判空栈 入栈 出栈 和顺序栈相比,链栈有一个比较明显的优势是:通常不会出现栈满的情况。 因为顺序栈用数组实现,必须事先确定栈的大小,对内存的使用效率并不高,无法避免因数组空间用光而引起的溢出问题;而链栈因为动态申请内原创 2022-07-02 22:58:19 · 1590 阅读 · 0 评论 -
考研复习之数据结构(六)栈和队列(下)(包含队列的相关内容、栈和队列的对比以及总结)
目录一、队列的定义1.1 相关概念和特点(1)基本概念(2)队列特点(3)案例引入2.1 队列分类二、队列的表示和实现2.1 顺序队列的表示和实现(1)结构体定义(2)初始化操作(3)入队操作(4)出队操作(5)队列大小与判断队列是否为空2.2 链式队列的表示和实现(1)结构体定义(2)初始化操作(3)入队操作(4)出队操作(5)输出队列全部字符与判断队列是否为空2.3 双向队列的表示和实现2.4 循环队列的表示和实现(1)结构体定义(2)初始化操作(3)入队操作(4)出队操作(5)全部源码三、经典实例3.原创 2022-07-03 18:37:42 · 398 阅读 · 0 评论 -
考研复习之数据结构笔记(七)数组和串(上)(包含数组的相关内容)
数组是由类型相同的数据元素构成的有序集合,每个元素称为数组元素,每个元素受n(n>=1)个线性关系的约束,可以通过下标访问该数据元素。数组可以看成是线性表的推广,其特点是结构中的元素本身可以是具有某种结构的数据, 但属于同一数据类型。例如,一维数组可以看成是一个线性表,二维数组可以看成数据元素是线性表的线性表。数组结构固定,数组行列数不可变、数据元素同构1、数据结构中最基本的一个结构就是线性结构,而线性结构又分为连续存储结构和离散存储结构。所谓的连续存储结构其实就是数组。2、在内存中,数组中的数据是以一组连原创 2022-07-05 12:38:49 · 893 阅读 · 0 评论 -
考研复习之数据结构笔记(八)数组和串(下)(包含串的相关内容)
目录一、串的定义1.1相关概念与特点(1)相关概念(2)特点二、串的表示和实现2.1 串的定长顺序存储(1)结构体定义(2)串的连接(3)串的子串2.2 串的堆分配存储(1)结构体定义 (2)初始化串、串的清空与销毁(3)串的长度(4)串的赋值(5)串的插入(6)串的删除(7)串的比较(8)串的连接2.3 串的链式存储三、经典实例3.1 串的模式匹配算法3.2 KMP算法(重点)(1)经典KMP(2)KMP改进(3)KMP优化概念引入: 字符串简称串,计算机上非数值处理的对象基本都是字符串数据原创 2022-07-09 17:14:43 · 408 阅读 · 0 评论 -
考研复习之数据结构笔记(九)树(上)(树和二叉树的概念、特征、性质及相关实例)
目录一、树的基本概念和术语1.1 基本定义与特点(1)基本定义:(2)基本特点1.2 树的基本术语1.3 树的基本性质二、二叉树2.1 二叉树的定义与性质(1)基本概念(2)与树的区别(3)几个特殊的二叉树2.2 二叉树的性质2.3 二叉树的存储结构(1)二叉树的顺序存储(2)二叉树的链式存储2.4 二叉树的遍历(1)先中后序遍历(递归实现与栈实现)(2)层次遍历(3)根据遍历序列确定二叉树三、二叉树的经典实例3.1 统计二叉树中叶子结点的个数3.2 求二叉树的深度(后序遍历)3.3 复制二叉树(后序遍历)原创 2022-07-11 16:03:38 · 679 阅读 · 0 评论 -
考研复习之数据结构笔记(十)树(下)(线索二叉树、树和森林、哈夫曼树、相关实例及章节小结)
目录一、线索二叉树1.1 基本概念(1)概念引入(2)基本定义1.2 线索二叉树的构造(1)存储结构描述(2)中序序列构造线索二叉树(3)先序和后序序列构造线索二叉树1.3 线索二叉树前驱后继查找与遍历(1)中序线索二叉树查找前驱后继(2)先序线索二叉树中查找前驱后继(3)后序线索二叉树中査找前驱后继(4)遍历中序二叉树二、树和森林2.1树的存储结构(1)双亲表示法(2)孩子表示法(3)孩子兄弟表示法2.2 树、森林、二叉树的转换2.3 树和森林的遍历三、哈夫曼树3.1 哈夫曼树定义3.2 哈夫曼树构造3.原创 2022-07-14 12:00:45 · 1419 阅读 · 0 评论 -
考研复习之数据结构笔记(十一)图(上)(包含图的相关定义特点、存储结构以及图的遍历)
1.图(Graph)由两个集合V(G)和E(G)组成,记为G=(V,E)其中V(G)是顶点的非空有限集E(G)是边的有限集合,边是顶点的有序对或无序对,E(G)可以是空集,如果为空则图没有边。2.有向图(Digraph)由两个集合V(G)和E(G)组成其中V(G)是顶点的非空有限集E(G)是有向边(即弧)的有限集合,弧是顶点的有序对,记,v为弧尾(Tail),w为弧头(head)。3.无向图(Undigraph)由两个集合V(G)和E(G)组成其中。......原创 2022-07-15 16:14:01 · 1142 阅读 · 0 评论 -
考研复习之数据结构笔记(十二)图(下)(图的应用,包含最小生成树、最短路径、拓扑排序、关键路径以及单元小结)
目录一、图的应用1.1 最小生成树(1)基本概念与问题引入(2)Prim(普里姆)算法(3)Kruskal(克鲁斯卡尔)算法1.2 最短路径(1)基本概念与问题引入(2)Dijkstra(迪杰斯特拉)算法(3)Flody(弗洛伊德)算法1.3 拓扑排序(1)基本概念与问题引入(2)相关实现1.4 关键路径(1)基本概念与问题引入(2)相关实现二、本章小结一个连通图的生成树包含图的所有顶点,并且只含尽可能少的边。即n个顶点n-1条边。问题引入: 图1.1-1 最小生成树问题引入最小生成树性质:算法基本过程:假原创 2022-07-18 16:58:18 · 888 阅读 · 0 评论 -
考研复习之数据结构笔记(十三)查找(上)(概念与静态查找,顺序查找、折半查找、分块查找)
静态查找表的查找方法有顺序查找、折半查找、散列查找等;适合动态查找表的查找方法有二叉排序树的查找、散列查找(哈希表)等。动态查找表——在查找过程中同时插入不在查找表中的数据元素,或者删除在查找表中存在的数据元素。查找也叫检索,是根据给定的某个值,在表中确定一个关键字等于给定值的记录或数据元素。静态最优查找树查找性能达最佳的判定树,即PH值为最小的二叉树。索引顺序查找(分块查找)的过程也是一个“缩小区间”的查找过程。在不等概率查找的情况下,折半查找不是有序表查找的最好方法。......原创 2022-07-19 18:12:40 · 827 阅读 · 0 评论 -
考研复习之数据结构笔记(十四)查找(中)(动态查找树表:二叉排序树、平衡二叉树、B树、B+树)
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉排序树是递归定义的。由定义可以得出二叉排序树的一个重要性质中序遍历一棵二叉树时可以得到一个结点值递增的有序序列。图1.1-1二叉排序树举例//二叉排序树的二叉链表存储表示{//关键字项//其他数据项}ElemType;//每个结点的数据域的类型{一棵m阶的B。......原创 2022-07-20 21:42:55 · 1127 阅读 · 0 评论 -
考研复习之数据结构笔记(十五)查找(下)(哈希表与本章小结)
散列表也属线性结构,但它和线性表的查找有着本质的区别。它不是以关键字比较为基础进行查找的,而是通过一种散列函数把记录的关键字和它在表中的位置建立起对应关系,并在存储记录发生冲突时采用专门的处理冲突的方法。哈希函数是一种映象,是从关键字集合到存储地址集合的一种映象哈希函数可写成addr(ai)=H(ki),ai是表中的一个元素,addr(ai)是ai的存储地址,ki是ai的关键字。构造对关键字进行分析,取关键字的若干位或其组合作哈希地址,适于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况。...原创 2022-07-21 18:34:59 · 847 阅读 · 0 评论 -
考研复习之数据结构笔记(十六)排序(上)(基本概念与概述、插入排序、交换排序)
每次将一个待排序的记录,按关键字的大小插入到已排好序的子序列中的适当位置,直到全部记录插入完毕为止。希尔排序可提高排序速度,因为关键字较小的记录跳跃式前移,在进行最后一趟dt=1的插入排序时,序列已基本有序。两两比较待排序记录的关键值,交换不满足顺序要求的记录,直到全部满足顺序要求为止。(1)排序定义将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。子序列的构成不是简单的“逐段分割”,而是将相隔某个增量的记录组成一个子序列。图2.3-1希尔排序算法演示。......原创 2022-07-22 21:51:36 · 627 阅读 · 0 评论 -
考研复习之数据结构笔记(十七)排序(中)(选择排序、归并排序、基数排序)
选择排序的基本思想每次从待排序记录中选出关键字最小的记录,顺序放在已排序的记录序列的后面,直到全部排完为止。原创 2022-07-24 15:14:58 · 668 阅读 · 0 评论 -
考研复习之数据结构笔记(十八)排序(下)(外部排序:基本方法、多路平衡归并、置换-选择排序、最佳归并树)
2)把ls[0]所存最小关键字来自于哪个归并段的序号得到为q,将该归并段的首元素输出到有序归并段里,然后把下一个元素关键字放入上一个元素本来所在的叶子结点b[q]中,调用Adjust顺着b[q]这个叶子结点往上调整败者树直到新的最小的关键字被选出来,其下标同样存在ls[0]中。我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。例如,现有通过置换选择排序算法所得到的9个初始归并段,其长度分别为9,30,12,18,3,17,2,6,24。.........原创 2022-07-24 16:43:36 · 1570 阅读 · 3 评论