<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WithoutEndFree的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WithoutEndFree</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WithoutEndFree]]></copyright><item><title><![CDATA[8.6总结与提高]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109910243</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109910243</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 22:36:10 +0800</pubDate><description><![CDATA[8.6总结与提高
一、主要知识点
1． 查找表的检索机制
查找表是由同一类型元素构成的集合。
本章给出了三种类型的查找表：

第一类主要基于线性结构，记录关键字一般按序排列，以提高检索速度，主要采用基于比较的顺序检索或折半检索方法。由于这一类查找表主要用于查找，一般不对表做插入和删除操作，通常称为静态查找表。
第二类主要基于树形结构，包括二叉树和 m 叉树，主要采用基于比较的分支检索方法，即从树根开始，根据比较结果，沿着特定的分支进行检索，其检索的时间复杂度与树的深度同级别为对数函数。由于这一类查找表不仅用]]></description><category></category></item><item><title><![CDATA[8.5计算式查找（哈希查找及性能分析）]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109910042</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109910042</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 22:25:58 +0800</pubDate><description><![CDATA[8.5计算式查找（哈希查找及性能分析）
一、哈希表的查找过程
哈希表的查找过程与哈希表的创建过程是一致的。假设要查找关键字为 K 的
元素，则查找过程如下：
[算法思想]：

（1） 首先计算 h0= hash（K）；
（2） 如果单元 h0为空，则所查元素不存在；
（3） 如果单元 h0中元素的关键字为 K，则找到所查元素；
（4） 否则重复下述解决冲突的过程：
a. 按解决冲突的方法，找出下一个哈希地址 hi ；
b. 如果单元 hi为空，则所查元素不存在；
c. 如果单元 hi中元素的关键字为 K，则]]></description><category></category></item><item><title><![CDATA[8.4 计算式查找（哈希表的构造）]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109909807</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109909807</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 22:17:26 +0800</pubDate><description><![CDATA[8.4 计算式查找（哈希表的构造）
哈希法又称散列法、杂凑法或关键字地址计算法等，相应的表称为哈希表、散列表、杂凑表等。
这种方法的基本思想是：首先在元素的关键字 k 和元素的存储位置 p 之间建立一个对应关系 H，使得 p=H (k)，H 称为哈希函数。创建哈希表时，把关键字为 k 的元素直接存入地址为 H (k)的单元；以后当查找关键字为 k 的元素时，再利用哈希函数计算出该元素的存储位置 p=H (k)，从而达到按关键字直接存取元素的目的。
当关键字集合很大时，关键字值不同的元素可能会映象到哈希表的同]]></description><category></category></item><item><title><![CDATA[8.3基于树表的查找]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109909270</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109909270</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 22:07:03 +0800</pubDate><description><![CDATA[8.3基于树表的查找
基于树的查找法是将待查表组织成特定树的形式并在树结构上实现查找的方法，故又称为树表式查找法，主要包括二叉排序树、平衡二叉树和 B_树等。
一、 二叉排序树
1、 二叉排序树定义与描述
二叉排序树又称为二叉查找树，它是一种特殊的二叉树。
其定义为：二叉树排序树或者是一棵空树，或者是具有如下性质的二叉树：

（1）若它的左子树非空，则左子树上所有结点的值均小于根结点的值；
（2）若它的右子树非空，则右子树上所有结点的值均大于（或大于等于）根结点的值；
（3）它的左右子树也分别为二叉排序树。]]></description><category></category></item><item><title><![CDATA[8.2基于线性表的查找法]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109908915</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109908915</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 21:45:36 +0800</pubDate><description><![CDATA[8.2基于线性表的查找法
基于线性表的查找法具体可分为顺序查找法、折半查找法以及分块查找法。
一、顺序查找法
顺序查找法的特点是，用所给关键字与线性表中各元素的关键字逐个比较，直到成功或失败。存储结构通常为顺序结构，也可为链式结构。
顺序结构数据类型的定义：
#define LIST_SIZE 20
typedef struct {
	KeyType key;
	OtherType other_data;
}RecordType;
typedef struct {
	RecordType r[LIST_SI]]></description><category></category></item><item><title><![CDATA[8.1查找的基本概念与方法]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109908813</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/109908813</guid><author>WithoutEndFree</author><pubDate>Sat, 21 Nov 2020 21:31:44 +0800</pubDate><description><![CDATA[8.1查找的基本概念
一、查找有关的基本概念
列表：由同一类型的数据元素（或记录）构成的集合，可利用任意数据结构实现。
关键字：数据元素的某个数据项的值，用它可以标识列表中的一个或一组数据元素。如果一个关键字可以惟一标识列表中的一个数据元素，则称其为主关键字，否则为次关键字。当数据元素仅有一个数据项时，数据元素的值就是关键字。
查找：根据给定的关键字值，在特定的列表中确定一个其关键字与给定值相同的数据元素，并返回该数据元素在列表中的位置。若找到相应的数据元素，则称查找是成功的，否则称查找是失败的，此时应返回]]></description><category></category></item><item><title><![CDATA[7.8总结与提高]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107102121</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107102121</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:32:26 +0800</pubDate><description><![CDATA[7.8总结与提高
【主要知识点】

（1）基本概念：
图中顶点间的关系可以任意的，因此图是最复杂的非线性结构，它的表达力强。
图具有有向图、无向图、连通图、强连通图、完全图、赋权图等多种类型。
（2）图的存储结构：
图的存储方式一般有两类，用边的集合方式有邻接矩阵，链接方式有邻接表、 十字链表、邻接多重表。
邻接矩阵和邻接表是两种常用的存储结构，适用于有向图（网）和无向图（网） 表示与处理。
（3）图的基本操作：
由于图中结点间可以是多对多的关系，为实现图的遍历必须设置访问标志数 组，以防止走回路或未访问到]]></description><category></category></item><item><title><![CDATA[7.7最短路径]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107101522</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107101522</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:32:15 +0800</pubDate><description><![CDATA[7.7最短路径
【最短路径问题】     如果将交通网络画成带权图，结点代表地点，边代表城镇间的路，边权表示路的长度， 则经常会遇到如下问题：两给定地点间是否有通路？如果有多条通路，哪条路最短？还可以 根据实际情况给各个边赋以不同含义的值。例如，对司机来说，里程和速度是他们最感兴趣 的信息；而对于旅客来说，可能更关心交通费用。有时，还需要考虑交通图的有向性，如航行时，顺水和逆水的情况。带权图的最短路径是指两点间的路径中边权和最小的路径。
1. 求某一顶点到其它各顶点的最短路径
设有带权的有向图 D=（V,{]]></description><category></category></item><item><title><![CDATA[7.6有向无环图应用之关键路径]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107101416</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107101416</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:31:57 +0800</pubDate><description><![CDATA[7.6有向无环图应用之关键路径
关键路径
有向图在工程计划和经营管理中有着广泛的应用。通常用有向图来表示工程 计划时有两种方法：

（1）用顶点表示活动，用有向弧表示活动间的优先关系，即上节所讨论的 AOV 网。
（2）用顶点表示事件，用弧表示活动，弧的权值表示活动所需要的时间。

把用第二种方法构造的有向无环图叫做边表示活动的网（Activity On Edge Network）,简称 AOE-网
AOE-网在工程计划和管理中很有用。在研究实际问题时，人们通常关心的是：

哪些活动是影响工程进度的关键活动]]></description><category></category></item><item><title><![CDATA[7.5有向无环图应用之拓扑排序]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107100485</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107100485</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:31:46 +0800</pubDate><description><![CDATA[7.5有向无环图应用之拓扑排序
有向无环图（Directed Acyclic Graph）是指一个无环的有向图，简称 DAG。有 向无环图可用来描述工程或系统的进行过程，如一个工程的施工图、学生课程间的制约关系图等。
拓扑排序
用顶点表示活动，用弧表示活动间的优先关系的有向无环图，称为顶点表示 活动的网（Activity On Vertex Network）， 简称为 AOV-网。
例如：计算机系学生的一些必修课程及其先修课程的关系如下：

用顶点表示课程，弧表示先决条件，则上述关系可用一个有向无环图表示，]]></description><category></category></item><item><title><![CDATA[7.4图的连通性]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107099669</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107099669</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:31:34 +0800</pubDate><description><![CDATA[7.4图的连通性
1. 无向图的连通分量
在对图遍历时，对于连通图，无论是广度优先搜索还是深度优先搜索，仅需要调用一次搜索过程，即从任一个顶点出发，便可以遍历图中的各个顶点。对于非连通图，则需要多次调用搜索过程，而每次调用得到的顶点访问序列恰为各连通分 量中的顶点集。例如，下图(a)是一个非连通图，按照它的邻接表进行深度优先搜 索遍历，三次调用 DepthFirstSearch 过程得到的访问顶点序列为：

可以利用图的遍历过程来判断一个图是否连通。如果在遍历的过程中，不止一次调用搜索过程，则说明该图就是一]]></description><category></category></item><item><title><![CDATA[7.3图的遍历]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107099627</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107099627</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:31:22 +0800</pubDate><description><![CDATA[7.3图的遍历
图的遍历就是从图中的某个顶点出发，按某种方法对图中的所有顶点访问且 仅访问一次。
图的遍历比起树的遍历要复杂得多。由于图中顶点关系是任意的，即图中顶点之间是多对多的关系，图可能是非连通图，图中还可能有回路存在，因此在访问了 某个顶点后，可能沿着某条路径搜索后又回到该顶点上。为了保证图中的各顶点 在遍历过程中访问且仅访问一次，需要为每个顶点设一个访问标志，因此要为图设置一个访问标志数组 visited[n]，用于标示图中每个顶点是否被访问过，它的初 始值为 0(假)，一旦顶点 vi访问过，则置]]></description><category></category></item><item><title><![CDATA[7.2图的存储结构]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107085836</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107085836</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:31:09 +0800</pubDate><description><![CDATA[7.2图的存储结构
本讲介绍 4 种较常用的存储表示法：①邻接矩阵表示法；②邻接表；③邻接 多重表；④十字链表。由于每种方法各有利弊，因此可以根据实际应用问题来选择合适的存储表示方法。
①邻接矩阵表示法
图的邻接矩阵表示法（Adjacency Matrix）也称作数组表示法。它采用两个数 组来表示图：一个是用于存储顶点信息的一维数组，另一个是用于存储图中顶点 之间关联关系的二维数组，这个关联关系数组被称为邻接矩阵。
若 G 是一具有 n 个顶点的无权图，G 的邻接矩阵是具有如下性质的 n×n 矩 阵 A：
]]></description><category></category></item><item><title><![CDATA[7.1图的基本概念]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107085369</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/107085369</guid><author>WithoutEndFree</author><pubDate>Wed, 14 Oct 2020 22:30:55 +0800</pubDate><description><![CDATA[7.1图的基本概念
一、图的定义
图(Graph)是一种网状数据结构，其形式化定义如下：
Graph=（V，R） 
V={x∣x∈DataObject} 
R={VR} 
VR={&lt;x，y&gt;∣P（x，y）∧（x，y∈V）} 

DataObject为一个集合，该集合中的所有元素具有相同的特性。
V 中的数据元素通常称为顶点（vertex）， VR 是两个顶点之间的关系的集合。P（x，y）表示 x 和 y 之间有特定的关联属性 P。

若&lt;x，y&gt;∈VR，则&lt;x，y&gt;表示从]]></description><category></category></item><item><title><![CDATA[6.11总结与提高]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106539942</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106539942</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:28:13 +0800</pubDate><description><![CDATA[6.11总结与提高
一、主要知识点
（1）理解定义：本章介绍的一般树与二叉树均为树结构，树结构是最重要的非线性结构。 注意树结构与线性结构的差别：在线性结构中前驱结点是惟一的，而树结构中结点的前驱只 有一个（除根结点无前驱外），后继个数可有 m(m≥0)个，其中二叉树是后继个数最多为 2 的树。
（2）存储结构：
①二叉树采用顺序存储与二叉链表存储，其孩子个数最大为 2，故采用二叉树的二叉链 表表示法实现存储。
②对一般树，由于结点的后继个数变化范围较大，常采用树的二叉链表表示法实现存储 （即孩子兄弟法）；]]></description><category></category></item><item><title><![CDATA[6.10哈夫曼编码与构造]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106539363</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106539363</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:28:02 +0800</pubDate><description><![CDATA[6.10哈夫曼编码与构造
哈夫曼编码
由于哈夫曼树是具有相同叶子个数的二叉树中带权路径长度最小的二叉树，涉及求根据给定叶子(带权)求其“规模最小”的二叉树问题，用哈夫曼树构造哈夫曼编码就是其典型应用。
1．哈夫曼编码的概念
用电子方式处理符号时，需先对符号进行二进制编码。例如，在计算机中使用的英文字 符的 ASCII 编码就是 8 位二进制编码，ASCII 编码是一种定长编码，即每个字符用相同数目的二进制位编码。
为了缩短数据文件（报文）长度，可采用不定长编码。其基本思想是，给使用频度较高 的字符编以较短的]]></description><category></category></item><item><title><![CDATA[6.9哈夫曼树及其构造]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538822</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538822</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:27:51 +0800</pubDate><description><![CDATA[6.9哈夫曼树及其构造
哈夫曼树可用来构造最优编码，用于信息传输、数据压缩等方面，哈夫曼树是一种应用广泛的二叉树
一、 哈夫曼树
1．哈夫曼树的基本概念
在介绍哈夫曼树之前，先给出几个基本概念。

结点间的路径和路径长度：路径是指从一个结点到另一个结点之间的分支序列，路径长度是指从一个结点到另一个 结点所经过的分支数目。
结点的权和带权路径长度 ：在实际的应用中，人们常常给树的每个结点赋予一个具有某种实际意义的实数，称该实数为这个结点的权。在树型结构中，把从树根到某一结点的路径长度与该结点的权 的乘积，叫做]]></description><category></category></item><item><title><![CDATA[6.8树、森林和二叉树的关系]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538349</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538349</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:27:39 +0800</pubDate><description><![CDATA[6.8树、森林和二叉树的关系
一、 树的存储结构
树的主要存储方法有以下三种：
1．双亲表示法
这种方法用一组连续的空间来存储树中的结点，在保存每个结点的同时附设一个指示器来指示其双亲结点在表中的位置，其结点的结构如下图所示：

整棵树用含有 MAX 个上述结点的一维数组来表示，如下图所示。
这种存储法利用了树中每个结点（根结点除外）只有一 个双亲结点的性质，使得查找某个结点的双亲结点非常容易。 反复使用求双亲结点的操作，也可以较容易地找到树根。但是，在这种存储结构中，求某个结点的孩子时需要遍历整个数组。
]]></description><category></category></item><item><title><![CDATA[6.7由遍历序列确定的二叉树]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538263</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106538263</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:27:28 +0800</pubDate><description><![CDATA[6.7由遍历序列确定的二叉树
在二叉树的遍历中，我们知道，给定一棵二叉树和一种遍历方法，就可以确定该二叉树相应的线性序列。那么，根据给定的遍历序列能否唯一的确定一棵二叉树呢？
显然，只由一种序列是无法确定二叉树的，要根据遍历序列确定二叉树，至少需要知道该二叉树的两种遍历序列。
表 6-1 列出了两种遍历序列组合确定二叉树的情况。

例已知一棵二叉树的先序序列与中序序列分别为：
A B C D E F G H I
B C A E D G H F I
试构造该二叉树。
分析：根据定义，二叉树的先序遍历是先访问根]]></description><category></category></item><item><title><![CDATA[6.6线索二叉树]]></title><link>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106537890</link><guid>https://blog.youkuaiyun.com/WithoutEndFree/article/details/106537890</guid><author>WithoutEndFree</author><pubDate>Fri, 03 Jul 2020 10:27:13 +0800</pubDate><description><![CDATA[5.6线索二叉树
二叉树的遍历运算是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时，只能找到结点的左、右孩子信息，而不能直接得到结点在遍历序列中的前驱和后继 信息。要得到这些信息可采用以下两种方法：第一种方法是将二叉树遍历一遍，在遍历过程 中便可得到结点的前驱和后继，但这种动态访问浪费时间；第二种方法是充分利用二叉链表 中的空链域，将遍历过程中结点的前驱、后继信息保存下来。下面重点讨论第二种方法。
我们知道，在有 n 个结点的二叉链表中共有 2n 个链域，但只有 n-1 个有用的非空链域，]]></description><category></category></item></channel></rss>