(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)红黑树
红黑树由来:
他是在1972年 由Rudolf Bayer发明的,他称之为“对称二叉B树”,它现代的名字是Leo J. Guibas和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,
插入和删除,这里的n 是树中元素的数目。
红黑树性质:
1. 每个结点或红或黑。
2. 根结点为黑色。
3. 每个叶结点(实际上就是NULL指针)都是黑色的。
4. 如果一个结点是红色的,那么它的周边3个节点都是黑色的。
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
- 大小: 56.7 KB
分享到:
相关推荐
R语言的基本数据结构,R语言的基本数据结构
算法合集之《基本数据结构在信息学竞赛中的应用》.doc 算法合集之《基本数据结构在信息学竞赛中的应用》.doc
总结来说,"基本数据结构c++版"的学习涵盖了数据和数据结构的基本概念,数据结构的分类及其在C++中的实现方法,以及与之相关的算法设计和分析。通过理解和熟练运用这些知识,开发者能够编写出更高效、更易于维护的...
基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的...
《计算机软件技术基础》谭浩强的课件第二章主要探讨了基本数据结构及其运算,这是计算机科学中至关重要的概念。这一章分为多个部分,详细介绍了数据结构的基础知识,包括逻辑结构、存储结构以及图形表示。 2.1 数据...
学数据结构的时候自己写的几种基本数据结构,包括binary tree,circular queueu,linked list,linked queue,linked stack,sequence list,sequence stack
对基本数据结构的模拟,实现arrayList,hashMap,树,队列,栈的基本方法,对于学习数据结构有一定的帮助 LinkedList[] arr = new LinkedList[999]; // 键值对集合! Map底层结构是:数组 + 链表 int size = 0; // ...
数据结构与算法是计算机科学的基础,它探讨了如何有效地存储和操作数据,以便进行高效的计算。数据结构是指组织数据的方式,而算法则是处理...因此,掌握基本数据结构与算法的知识,是成为一名优秀程序员的关键步骤。
python基本数据结构以上是Python中最常用的基本数据结构,你可以根据具体的需求选择合适的数据结构来存储和处理数据。
区块链的基本数据结构解析.pdf区块链的基本数据结构解析.pdf
基本数据结构和算法学习笔记(持续更新中...)。慢慢滴~ 包括基本的数据结构和算法,如数组、链表、字符串、树、图、dp等等... 还有很多算法刷题代码,目前我和我女朋友一起开发。欧拉拉~欧拉拉~.zip
作业1-基本数据结构.ipynb
史上最全——基本数据结构(共100个)
Opencv 第07集 Opencv基本数据结构.flv
该项目提供基于Python实现的全面数据结构与算法设计源码,涵盖38个文件...内容详实,包含队列、堆、栈、链表、树、图等基本数据结构及部分算法,用简洁易懂的语言阐述,助力数据结构与算法的学习与理解,提升学习效率。
数据结构Java实现(基于《算法四》),实现线性表、排序、查找、树、图等基本数据结构_DataStructure
C/C++,树算法——二叉树(BTree)的基本数据结构
基本数据结构与算法.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
基本数据结构和查找排序算法的Demon_SJDataStructures