基础的数据结构
线性结构
线性结构有:数组、队列、栈、链表
1.数组
数组是比较简单的数据结构,是连续的区域,很多地方都会用到它,栈和队列其实也可以看成是数组,只不过它被受限了。
2.队列
队列(queue)只能在队首和队尾进行操作,队尾进、队首出类似现实生活中的排队。
3.栈
栈(stack)也是一种基本的数据结构,也是受限的,它只能在栈顶进行操作。后进先出,可以当场一摞书去理解,现实生活中浏览器的撤销功能就是栈的应用。
4.链表
链表是一种非连续的存储结构,链表由一系列的节点构成,节点包括数据域和指针域.
非线性结构
非线性结构有:树、图
5.树
应用非常广泛小到文件系统,Linux文件系统就是树结构,大到因特网都是树结构。
树的基本算法有前中后序遍历和层次遍历。
二叉树
是节点数不超过2的树。
堆
一种优先级队列,堆是一颗完全二叉树。堆是用数组实现的二叉树。
二叉查找树
二叉查找树实际上是数据域有序的二叉树,左子树上所有节点的值均小于等于他的根节点的值,右子树上所有节点的值均大于等于他根节点的值,左右子树也分别是一颗二叉查找树。
红黑树
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点
6.图
要说树中元素是“一对多”的关系,图中元素就是“多对多”的关系。图是由顶点的有穷非空集合和顶点之间边的集合组成