欧。写数据构造也是醉了

欧。。写数据结构也是醉了

从哈弗曼压缩看数据结构

 

    数据结构指的是数据的表示方式以及数据之间的各种联系。一个好的数据结构能在一定程度上提高数据的存储和计算效率。

    数据结构包括三个方面:逻辑结构、存储结构(物理结构)和数据操作。

    下面就把哈弗曼压缩掺杂其中对数据结构说下自己的理解。

 

逻辑结构:

 

逻辑结构就是数据之间的逻辑关系,常见的有:线性结构(包括链表,队列,栈等),树结构和图结构。

在一个数据集合中,可以通过数据A和它与数据B之间的关系得到数据B,如此便可以“顺藤摸瓜”。这里的“藤”是数据结构,“瓜”是各个数据元素。

    哈弗曼树是树结构中的一种,是二叉树中的一种最优情况,因此也被成为最优二叉树。这里的最优,指的是树的带权路径长度(WPL)最小。这里可以联想一下古代贵族等级,想像每个贵族生两个儿子,按照森严的等级秩序排列下来,父亲总比儿子的爵位高,爵位越高对应权值越大,他们的family tree就类似一个哈弗曼树。

 

存储结构(物理结构):

 

存储结构就是数据在内存单元中的存储方式,常见的两个方式:顺序存储结构和链式存储结构。

顾名思义,顺序存储结构就是数据依次存放在连续的内存空间中,而链式存储结构把数据放在地址分散的内存中。顺序存储结构的逻辑关系靠存储次序体现出来(如数组),而链式存储结构则靠指针确定数据之间的逻辑关系(如链表)。打比方的话,顺序存储是邻居,关系靠距离,链式存储是亲戚,关系不在于距离远近。

 

 

数据操作:

 

数据操作就是对某数据结构中的数据进行各种运算或者处理。

在具体实践中,这些操作是通过算法来实现的,对数据进行删除、插入、修改,还有对整个数据集合进行求长度、遍历、取值等等。对于顺序结构来说,操作(比如删除)是要对数据进行移动的,而对于链式存储结构来说,操作(比如插入)是不用改变存储位置的,只要改变数据(结点)间的连接关系即可。

 

 = = 目前就想起这么多了,无感,赶明儿有感觉再补充。。。