数据结构(2)-栈和队列和Hash表

栈和队列

限定仅在表尾进行的插入和删除操作
栈有顺序存储结构和链式存储结构

队列

队列是只允许在一段进行插入操作,另一端进行删除操作,插入的一段称为队尾,删除的一端称为对头
队列的顺序存储结构
缺点:出队复杂度高O(N)
容易假溢出

数据结构(2)-栈和队列和Hash表_第1张图片

数据结构(2)-栈和队列和Hash表_第2张图片

队列的链式存储结构,其实就是线性表的单链表,但是它是尾进头出而已。

队列的变形

双端队列Deque,例如:LinkedList/ ArrayDeque/ LinkedBlockingDeque(阻塞的双向队列)
优先级队列,例如,MessageQueue

hash表

hash表的特点

对于顺序表的特点(寻址容易,插入和删除困难)和链表的特点(寻址困难,插入和删除容易)进行综合,出现了一种寻址容易,插入删除也容易的数据结构hash表。

概念

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度

关键码值(Key value)也可以当成是key的hash值
这个映射函数叫做散列函数
存放记录的数组叫做散列表

散列函数和散列表

数据结构(2)-栈和队列和Hash表_第3张图片
  • 这里的对应关系f称为散列函数,又称为(Hash 函数)
  • 采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或hash 表

hash表的优缺点

  • 优点:
    • 查找,插入,删除只需要接近常量的时间O(1),实际上就是几条机器指令。哈希表在速度和易用性方面是无与伦比的。
  • 缺点:
    • 基于数组的,数组创建后难于拓展,当hash表被基本填满后,性能下降非常严重,所以要求程序员预先清楚表中存储多少数据。

数据结构导读目录

你可能感兴趣的:(数据结构(2)-栈和队列和Hash表)