栈和队列
栈
限定仅在表尾进行的插入和删除操作
栈有顺序存储结构和链式存储结构
队列
队列是只允许在一段进行插入操作,另一端进行删除操作,插入的一段称为队尾,删除的一端称为对头
队列的顺序存储结构
缺点:出队复杂度高O(N)
容易假溢出
队列的链式存储结构,其实就是线性表的单链表,但是它是尾进头出而已。
队列的变形
双端队列Deque,例如:LinkedList/ ArrayDeque/ LinkedBlockingDeque(阻塞的双向队列)
优先级队列,例如,MessageQueue
hash表
hash表的特点
对于顺序表的特点(寻址容易,插入和删除困难)和链表的特点(寻址困难,插入和删除容易)进行综合,出现了一种寻址容易,插入删除也容易的数据结构hash表。
概念
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度
关键码值(Key value)也可以当成是key的hash值
这个映射函数叫做散列函数
存放记录的数组叫做散列表
散列函数和散列表
- 这里的对应关系f称为散列函数,又称为(Hash 函数)
- 采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或hash 表
hash表的优缺点
- 优点:
- 查找,插入,删除只需要接近常量的时间O(1),实际上就是几条机器指令。哈希表在速度和易用性方面是无与伦比的。
- 缺点:
- 基于数组的,数组创建后难于拓展,当hash表被基本填满后,性能下降非常严重,所以要求程序员预先清楚表中存储多少数据。
网友评论