
数据结构笔记
文章平均质量分 97
Zevalin爱灰灰
如果能找到就好了
展开
-
数据结构 第一章(绪论)
(1)算法时对特点问题求解方法和步骤的一种描述,它是指令的有限序列,其中每个指令表示一个或多个操作。(2)一个算法必须满足以下5个重要特性:①有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。②确定性。对于每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,算法的执行者或阅读者都能明确其含义及如何执行。③可行性。算法中的所有操作都可以通过将已经实现的基本操作运算执行有限次来实现。④输入。原创 2024-04-01 00:05:57 · 1700 阅读 · 0 评论 -
数据结构 第二章(线性表)
同一线性表中的元素必定具有相同的特性,即属于同一数据对象,相邻数据元素之间存在着序偶关系。由n(n≥0)个数据特性相同的元素构成的有限序列称为线性表,线性表中元素的个数n定义为线性表的长度,当n=0时称之为空表。对于非空的线性表或线性结构,其特点是:①存在唯一的一个被称作“第一个”的数据元素。②存在唯一的一个被称作“最后一个”的数据元素。③除第一个元素之外,结构中的每个数据元素均只有一个前驱。④除最后一个元素之外,结构中的每个数据元素均只有一个后继。。原创 2024-04-01 15:49:45 · 1766 阅读 · 1 评论 -
数据结构 第三章(栈和队列)【上】
(1)栈(stack)是限定仅在表尾进行插入或删除操作的线性表,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。(2)栈的修改是按后进先出的原则进行的,最早进入栈的元素最晚离开,因此栈又称为后进先出(LIFO)的线性表。(1)和栈相反,队列(queue)是一种先进先出(FIFO)的线性表,它只允许在表的一端进行插入,而在另一端删除元素。(2)最早进入队列的元素最早离开。在队列中,允许插入的一端称为队尾。原创 2024-04-02 15:05:55 · 1078 阅读 · 0 评论 -
数据结构 第三章(栈和队列)【下】
②假设当前队列分配的最大空间为6,则当队列处于上图(d)所示的状态时不可再继续插入新的队尾元素,否则会出现溢出现象,即因数组越界而导致程序的非法操作错误,事实上,此时队列的实际可用空间并未占满,所以这种现象称为“假溢出”,这是由“队尾入队,队头出队”这种受限制的操作造成的。④出队操作是指将队头元素删除,删除前需判断队列是否为空(头指针和尾指针相等且标志位为1时,说明队列中没有元素,也就是队空),不为空则开始出队,当出完最后一个元素时,头指针和尾指针相等,此时需要将标志位置0以表队空。原创 2024-04-02 15:08:13 · 1021 阅读 · 0 评论 -
数据结构 第四章(串、数组和广义表)
(1)串或字符串是由零个或多个字符组成的有限序列,用双引号在序列的两端进行标识。(2)串中的数目称为串的长度,零个字符的串称为空串。(3)串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位置,子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。(4)当且仅当两个串的值相等,称这两个串是相等的,也就是说,只有当两个串的长度相等且各个对应位置的字符都相等时两个串才相等。原创 2024-04-03 08:47:33 · 1294 阅读 · 0 评论 -
数据结构 第五章(树和二叉树)【上】
(1)树是n(n≥0)个结点的有限集,它或为空树(n=0),或为非空树。对于非空树T,有且仅有一个称之为根的结点(一棵树可以只有根结点,没有其它结点),除根结点以外的其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树(下图中结点A有3棵子树)。(2)树的结构定义是一个递归的定义,即在树的定义中又用到树的定义。(1)二叉树(Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0),或为非空树。对于非空树T有且仅有一个称之为根的。原创 2024-04-03 22:03:46 · 1617 阅读 · 0 评论 -
数据结构 第五章(树和二叉树)【下】
(1)问题描述:设计二叉树的双序遍历算法(对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。②新增数据元素,无需按逻辑上的次序存储,删除叶子结点上的数据元素同理,但如果删除的不是叶子结点,那就需要把以该结点为根的子树中的全部结点删除。②构造一个新结点,从F中选取两棵根结点权值最小的树作为新结点的左、右子树,并且将新结点的权值置为左、右子树上根结点的权值之和。②后根(次序)遍历,即先依次后根遍历根的每棵子树,然后访问树的根结点。原创 2024-04-04 00:00:31 · 1226 阅读 · 0 评论 -
数据结构 第六章(图)【上】
(1)图(Graph)G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集,若E(G)为空,则图G只有顶点而没有边。(2)对于图G,若边集E(G)为有向边的集合,则称该图为有向图;若边集(G)为无向边的集合,则称该图为无向图。原创 2024-04-04 15:05:34 · 1988 阅读 · 0 评论 -
数据结构 第六章(图)【下】
(2)构造最小生成树有多种算法,其中多数算法利用了最小生成树的一种简称为MST的性质:假设N=(V, E)是一个连通网,U是顶点集V的一个非空子集,若(u, v)是一条具有最小权值(代价)的边,其中uϵU(已落在生成树上的顶点集)、vϵV-U(尚未落在生成树上的顶点集),则必存在一棵包含边(u, v)的最小生成树。的最迟开始时间l(i)和其最早开始时间e(i)的差值是该活动完成的时间余量,它是在不增加完成整个工程所需的总时间的情况下,活动。①若网中有几条关键路径,则需加快同时在几条关键路径上的关键活动。原创 2024-04-05 15:31:09 · 1295 阅读 · 0 评论 -
数据结构 第七章(查找算法)
为了改善算法的运行效率,可以闲置数组R的0号元素不用于存储,进入查找算法后把需要查找的值赋给0号元素,然后从顺序表的最后一个元素开始,逐个元素与0号元素比较,查找到目标元素后当即结束查找并返回元素的下标,当目标元素不在顺序表中时,查找算法遍历所有元素后最终会访问0号元素,这时必定会结束查找并返回0,代表要查找的元素不在顺序表中,如此,可以免去查找过程中每一步都要检测整个表是否查找完毕。若表中存在这样的一个记录,则称查找成功,此时查找的结果可给出整个记录的信息,或指示该记录在查找表中的位置;原创 2024-04-05 22:21:58 · 1345 阅读 · 0 评论 -
数据结构 第八章(排序算法)【上】
(1)排序是按关键字的非递减或非递增顺序对一组记录重新进行排列的操作,如果参加排序的数据结点包含多个数据域,那么排序往往是针对其中某个域而言。(2)当待排序的序列中存在两个或两个以上关键字相等的记录时,则排序所得的结果不唯一。假设(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中领先于(即i<j),若在排序后的序列中仍领先于,则称所用的排序方法是稳定的,反之,若可能使排序后的序列中领先于,则称所用的排序方法是不稳定的。原创 2024-04-06 21:47:16 · 1486 阅读 · 0 评论 -
数据结构 第八章(排序算法)【下】
(1)分配类排序不需要比较关键字的大小,它是根据关键字中各位的值,通过对待排序记录进行若干趟“分配”与“收集”来实现排序的,是一种借助于多关键字排序的思想对单关键字进行排序的方法。(2)假设记录的逻辑关键字由d个关键字组成,每个关键字可能取rd个值,只要从最低数位关键字起,按关键字的不同值将序列中记录分配到rd个队列中后再收集,如此重复d次完成排序,按这种方法实现排序称之为基数排序,其中“基”指的是rd的取值范围。基数排序是典型的分配类排序,又叫桶排序或箱排序。原创 2024-04-06 21:58:13 · 1310 阅读 · 0 评论