读书人

根本数据结构

发布时间: 2012-08-31 12:55:03 作者: rapoo

基本数据结构

(1)栈和队列

???? 栈:主要作用表现为一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

???? 栈的java实现代码:http://shaojiashuai123456.iteye.com/admin/blogs/1426428

?

??? 队列:

??? 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

(2)链表

????? 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。

??? 链表分为单链表和双链表,现在linux2.6内核中使用了更为高效的链表方式,传统节点为:

????? struct element

????? {

??????????????? struct element? *pre;

???????????????? struct element? *next;

???????????????? void?????????????????? *value;

????? };

????? 内核中使用:

?????

????? struct element

????? {

??????????????? struct element? *pre;

???????????????? struct element? **next;

???????????????? void?????????????????? *value;

????? };

????

?? ? 链表实现c语言代码:http://shaojiashuai123456.iteye.com/admin/blogs/1415886

?

(3)散列表

????

(4)二叉树查找树

?

?????? 二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树:

??????? 1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

??????? 2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

??????? 3)左、右子树也分别为二叉排序树;

?

?????? 二叉查找树删除最为复杂,因此在此详细介绍下删除,删除三种类型如下图:

?????
根本数据结构
?

????? (1)第一种情况如图a),要删除的节点左右子树都为空,此时只要删除掉此节点即可。

????? (2)第二种情况如图b),只有右子树,此时只要删除掉此节点,并将此节点右子树返回给上层节点.(只有左子树情况同理)

????? (3)第三章情况如图c),既有左子树,又有右子树,这种情况最为复杂:

??????????????我们删除的其实不是节点,而是节点中存储的数据,所以替换数据也就是删除,所以在这种情况下我们采用替换数据的方式来解决。

????????????? 选取替换的数据有两种方法,一是在左子树中找到最大的数据,二是在右子树中找到最大的数据,只有这样的数据才能保证还是排序树。

????????????? 步骤如下:

??????????????????? 1)?需要找到左子树中最大的数
??????????????????? 2)替换到要删除的值
??????????????????? 3)然后在左子树中删除最大的节点
??????????????????? 4)返回节点

???? ????????? 二叉查找树c语言实现代码:http://shaojiashuai123456.iteye.com/admin/blogs/1426432

???????????????二叉查找树java语言实现代码:?http://shaojiashuai123456.iteye.com/admin/blogs/1430098

?

(5)红黑树

??? ?红黑树原理详解(上):?? http://hi.baidu.com/20065562/blog/item/93b2d17fd6f391320dd7da44.html

???? 红黑树原理详解(下):?? http://hi.baidu.com/20065562/blog/item/8777467e5292f30229388a0f.html

?

(6)字典树

????? 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。

??????字典树c语言实现代码: http://shaojiashuai123456.iteye.com/admin/blogs/1471945

??????

?(6)B树,B+树,B-树

???????

?

??????B树,B+树,B-树,R树 : http://blog.csdn.net/v_JULY_v/article/details/6530142????

读书人网 >编程

热点推荐