自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 数据结构学习日志之二十--图的遍历

图的遍历,从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。图的深度优先遍历:假设有上图迷宫,我们需要走遍其每个顶点。假设从A开始,让其一直往右走,并标记已经走过的地点,即A-B-C-D-E-F,当其走到F时,A已经标记走过,则继续走G-H,到了H发现邻接点都走过了,则回溯到G,G发现邻接点也都走过了,则回溯到F,以此类推,回溯到B时,发现I没走过,则往I走,走完之后又回溯到B,最终...

2018-05-17 11:13:09 344

原创 数据结构学习日志之十九--十字链表与邻接多重表

之前我们讲到,对于有向图,它的邻接表有出度和入度之分。为此,重新定义顶点结构和边表结构顶点结构data表示顶点数据,firstIn表示入边表,firstOut表示出边表边表结构tailVex表示弧起点顶点下标,headVex表示弧终点顶点下标,headLink指向弧头相同的下一条弧,tailLink指向弧尾相同的下一条弧这就是十字链表,好处就是把邻接表和逆邻接表整合在一起,既容易找到以Vi为尾的弧...

2018-05-16 17:01:22 469

原创 数据结构学习日志之十八-- 图的存储结构(邻接表)

由于邻接矩阵空间利用率较低,我们可以考虑另一种存储结构方式。将数组和链表结合一起来存储,称为邻接表。邻接表的处理方法是这样的1.图中顶点用一个一维数组存储。2.图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,使用单链表存储。如图,对于无向图,一维数组存储顶点数据还有指针,分别指向他们的邻接点如果是有向图,邻接表也是类似,但是邻接表对于有向图有入度与出度之分。...

2018-05-16 15:39:40 351

原创 数据结构学习日志之十七--图的存储结构(邻接矩阵)

因为任意两个顶点之间都可能存在联系,因此无法用数据元素在内存中的物理位置来表示元素之间的关系。对于无向图,图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧。如图,假设该二维数组为A,则A[v0][v1]的值为1代表顶点v0跟v1之间有边,A[v1][v3]的值为0则代表v1与v3之间没有边。可以看出无向图的邻接矩阵都为对称矩阵。由...

2018-05-16 15:22:11 303

原创 数据结构学习日志之十六--图

图是比树形结构和线性结构更为复杂的数据结构。线性表里面,除第一个和最后一个,每个数据元素都只有一个直接前驱和直接后继。树形结构中,数据元素有着明显的层次关系,每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中的一个元素相关。而在图中,结点之间的关系可以是任意的,图中任意两个数据元素都可能相关。图是一种数据结构,在图中的数据元素通常称作顶点。假设V是顶点的集合;VR是两个顶点之间的关系的...

2018-05-16 11:41:26 183

原创 数据结构学习日志之十六--赫夫曼编码

赫夫曼编码可以很有效的压缩数据。我们先来看几个名词1.定长编码:像ASCII编码,每个字符8位。2.变长编码:单个编码的长度不一致,可以根据整体出现频率来调节3.前缀编码:任意一个字符的编码都不是另一个字符的编码的前缀。我们可以利用二叉树来设计二进制的前缀编码。假设有一棵如上图的二叉树,其4个叶子节点分别表示A、B、C、D这4个字符,左分支表示字符'0',右分支表示字符'1',则可以从根结点到叶子...

2018-05-14 17:09:31 234

原创 数据结构学习日志之十五--赫夫曼树

赫夫曼树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用,尤其在数据压缩方面路径长度:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目。树的路径长度是从树根到每个结点的路径长度之和,完全二叉树就是路径长度最短的二叉树。若结点带权,结点的带权路径长度是从该结点到树根之间的路径长度与结点上权的乘积。树的带权路径长度为树中所有叶子结点的带权路径长度之和,通常记做WP...

2018-05-13 15:47:05 639

原创 数据结构学习日志之十四--树和二叉树的转换

普通树转换为二叉树1.在书中所有的兄弟结点之间加连线2.对每个结点,除了长子(即最左子结点),其余与双亲连线去掉森林到二叉树的转换1.先讲森林中的每一颗树变为二叉树2.再将每颗二叉树的根节点连接在一起二叉树到森林的转换1.若结点x是其双亲y的左孩子,则把x的右孩子,右孩子的右孩子...都与y用连线连起来2.去除双亲所有右孩子的连线树和森林的遍历分为前序遍历和后序遍历,遍历结果与其转换的二叉树结果相...

2018-05-13 15:04:35 154

原创 数据结构学习日志之十三--树和森林

树的存储结构1.双亲表示法:假设以一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置。这种存储结构利用了每个结点除了根节点都只有一个双亲,求双亲容易,但是求结点的孩子难,需要遍历整个结构2.孩子表示法:由于树种每个结点可能有多颗子树,则可用多重链表,即每个结点有多个指针域,每个指针指向一颗子树的根结点。第一种方法,由于树种很多结点的度都小于d,势必会造成浪费第二种...

2018-05-13 14:47:55 296

原创 数据结构学习日志之十二--线索二叉树

在数据结构学习日志之十一里面我们知道,有n个结点的二叉树共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。遍历二叉树是以一定规则将二叉树中的结点排成一个线性序列。这实质上是对一个非线性结构进行线性化操作,使每个结点(除第一个和最后一个外),这些线性序列中有且仅有一个直接前驱和直接后继。当二叉树链表做为存储结构时,只能找到结点的左、右孩子信息,而不能得到结点在任意序列里面的前驱和后继,...

2018-05-04 16:46:15 337

原创 数据结构学习日志之十一--遍历二叉树

二叉树由3个基本单元组成:根结点,左子树和右子树。因此,若能依次遍历这三部分,便是遍历了整个二叉树。假如以L、D、R分别表示遍历左子树、访问根结点和遍历右子树,则可有DLR、LDR、LRD、DRL、RDL、RLD这6种方案。若限定先左后右,则只有前3种情况,分别称之为先(根)序遍历、中(根)序遍历和后(根)序遍历。首先我们来建立一个二叉树,采取的是链式存储结构typedef struct BiTN...

2018-05-03 15:56:04 209

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除