数据结构和算法
bigxu
热爱生活!!!
展开
-
openssl之stack学习
opensll中实现了很多的数据结构,借学习openssl源码来复习数据结构。源码在crypto\stack中。先来分析一下其中实现的源码中结构体定义和一些函数。参考了赵春平老师的Openssl编程typedef struct stack_st { int num;//存在的节点数 char **data;//由于不知道要存储数据的类型,存放数据的地址。类似C++的模板的功能 int原创 2011-12-30 11:29:42 · 1745 阅读 · 1 评论 -
openssl学习之lhash
学习openssl中的lhash,源码在crypto\lhash目录下。Lhash在openssl中用到的地方很多,如文本数据库txt_db中,具体的以后再分析。首先看看lhash的实现结构,lhash的实现很多地方和stack的实现相同。参考了赵春平老师的Openssl编程和mm350670610的这篇博文。//哈希节点的定义,是一个单链表typedef struct lhash_node_s原创 2012-01-02 14:23:21 · 3750 阅读 · 0 评论 -
数据结构-----二叉树的遍历
数据结构学完有好长时间了。渐渐忘记了很多,在此机会以做笔记的形式将其复习一般,同时熟悉敲点代码熟悉VIM。一,基本概念1,二叉树是节点的有限集合,该集合或者为空(而树不允许为空)或者是由一个根和两棵互不相交的、称为该根的左子树和右子树组成。2,几种特殊的二叉树满二叉树:高度为h的二叉树敲好有2h -1个结点时称为满二叉树完全二叉树:一个二叉树中,只有最下面两层结点的度(一个结点原创 2012-08-09 16:54:32 · 2433 阅读 · 0 评论 -
数据结构------堆和优先权队列
堆和优先权队列是基于树型结构的实现的。一,堆1,堆的定义:一个大小为n的堆是一棵包含n个结点的完全二叉树,该书中每个结点的关键字值大于等于其双亲结点的关键字,完全二叉树的根称为对顶。它的关键字值是整棵树上最小的称为最小堆,反正最大的称为最大堆。2,堆的存储,由于堆是完全二叉树,正如二叉树学习时提及,完全二叉树可以通过顺序存储来实现,故采用顺序存储结构来学习堆。3,建堆算法,建堆算法原创 2012-08-09 21:02:43 · 2775 阅读 · 0 评论 -
数据结构------哈夫曼数及哈夫曼编码
哈夫曼(huffman)树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用。通过构造哈夫曼树来生成哈夫曼编码。哈夫曼编码使用的是不等长编码(ASCII为等长编码),通过不等长编码将出现频率高的字符编码比较短,频率高的字符编码长的方式来减少文本的长度。一,哈夫曼树首先理解一下什么是路径和路径长度。路径:从树中一个结点到另一个节点之间的边数构成这两个结点之间的路径。路径上变数之和称为路原创 2012-08-11 10:03:08 · 5785 阅读 · 0 评论 -
数据结构-----二叉搜索树
二叉搜索树是一种搜索树,通常的二分搜素算法有很好的搜索性能但是一般在顺序表上进行,插入和删除元素比较费时。而通过采用树型结构,能够有效的支持插入和删除,同时保证查找的效率。(很多内容摘自数据结构---陈慧南编写的书上)一,二叉搜索树1)二叉搜索树的定义假定所有结点的关键字值各不相同,二叉搜索树或者是一个空二叉树,或者是具有下列性质的二叉树:若左子树不空,则左子树上的所有结点的关原创 2012-08-12 22:02:58 · 2991 阅读 · 0 评论 -
数据结构------二叉平衡树(二)删除操作
二叉平衡树的删除与插入类似,先采用二叉搜索树的删除方法,删除结点,再在必要时通过重新平衡,恢复平衡性和排序性。当删除X有两个孩子时,使用替代法,将问题转化为删除只有一个孩子的结点的问题,然后删除之。由q指向实际被删除的结点,它最多只有一个非空子树,当结点q由它的孩子取代后,该树变矮,这种情况会影响其祖先的平衡性,应重新平衡。使用short变量来记录对其双亲(p)平衡性的影响。同插入的情况一样,原创 2012-08-15 22:06:31 · 3573 阅读 · 0 评论 -
数据结构------二叉平衡树(一)插入操作
二叉平衡树是一种特殊的二叉树,它能有效的控制树的高度,避免产生普通二叉搜索树的“退化”树形一,基本定义1、二叉平衡树又称AVL树,它或是一棵空二叉树,或者是具有以下性质的二叉树。(1)其根的左右子树高度只差的绝对值不超过1(2)其根的左右子树都是二叉平衡树二叉树结点上的平衡因子定义为该结点左子树的高度减去右子树的高度,即取值为-1,0,1下面的研究都是基于二叉平衡搜索树,在原创 2012-08-14 22:01:43 · 3205 阅读 · 0 评论