数据结构
栈(stack)
栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫栈顶(top).它是后进先出(LIOF)的,对栈的基本操作只有push(进栈)和pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素
队列
队列是一种特殊的线性表,特殊之处在于他之允许在表的前端进行删除操作,在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表,进行插入操作的段成为队尾,进行删除操作的端成为对头
链表
链表是一种数据结构,和数组同级,比如java中我们使用ArrayList实现原理是数组,而LinkedList实现原理就是链表;链表在进行循环遍历时效率不高,但是插入和删除时优势明显
散列表
散列表(HashTable , 也叫哈希表)是一种查找算法,与链表,树等算法不同的是,散列表算法在查找时不需要进行一系列和关键字(关键字是数据元素中某一个数据顶的值)的比较操作.
散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,所以就必须要在数据元素的存储位置和他的关键字之间建立一个确定的对应关系,是每一个关键字和散列表总一个唯一的存储位置相对应,因此在查找的时候只需要根据这个对应关系找到给定关键字在散列表中的位置即刻,这种对应关系呗成为散列函数
用的构造散列函数的方法有:
- 直接定址法:去关键字或关键字的某个线性函数值为散列地址
- 数字分析法
- 平方取值法:取关键字平方后的中间几位为散列地址
- 折叠法:将关键字分割成位数相同的几部分,然后取出这几部分的叠加和作为散列地址
- 除留余数法:取关键字被某个不大于散列表表长m的数P除后所得到的余数为散列地址
- 随机数法:选择一个随机函数,取关键字的随机函数值为他的散列地址
排序二叉树
首先如果普通
红黑树
R-B Tree 全称是Red-Black Tree , 又称为红黑树,它是一种特殊的二叉查找树,红黑树的每个节点都有存储表示节点的颜色,可以使红色或黑色
红黑树的特性
- 每个节点或者是黑色或者是红色
- 根节点是黑色
- 每个叶子节点是黑色(这里的叶子节点是指为空的叶子节点)
- 如果一个节点是红色的,则他的子节点必须是黑色
- 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点