数据结构|解析数据结构-散列表

散列表 数组
操作数据(增加): 是将原数组的数据复制一份,再加上增加的对应位置的数据,形成一个新的数组。所以较慢。
查找数据:数组是有下标的,根据下标进行查找。
形式:
数据结构|解析数据结构-散列表
文章图片

链表
一个链表的数据单元,结构是存储着一个数据,以及下一个链表单元数据的地址。

  1. 操作数据(增加):如 a-b。在ab之间增加一个c,增加c这个单元,并修改c的“下一个链表单元的地址”为b的地址,并将a的“下一个链表单元的地址”修改为c的地址即可。
  2. 取出数据,根据上一个数据,才能找到下一个数据。比数组慢
形式:
数据结构|解析数据结构-散列表
文章图片

散列表
前面的两个数据结构是我们在数据结构中经常接触的各种结构的基础,散列表就是他们的结合
形式:
数据结构|解析数据结构-散列表
文章图片

Hash冲突:
当重复的值要插入时发现已经被占用时,就出现了冲突问题,如何解决?
散列函数:Hash函数(解决hash冲突问题)
  1. 开放寻址
    缺点
    1. 体积局限,装不下时需要进行扩容
      数据结构|解析数据结构-散列表
      文章图片

    2. 拉链
      优点
      1. 使用简单
      2. 插入方便
数据结构|解析数据结构-散列表
文章图片

例子
【数据结构|解析数据结构-散列表】java中的hashmap就使用到了散列表

    推荐阅读