数组
分配一块连续且固定大小的内存,存储一类数据类型,下标从0开始
优点:按照索引查找速度快;遍历数组方便
缺点:数组大小确定后无法扩容,只能重新新建一个大的数组;只能存储一种数据类型;添加删除的操作比较慢,因为要移动其他元素
栈
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。
队列
也是一种线性表。可以在一段添加元素,在另一端取元素,先进先出
栈常应用于实现递归功能方面的场景
队列在多线程阻塞队列管理中非常适用
链表
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。
根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。
优点:不需要初始化容量,可以任意加减元素;添加或者删除元素时只需要改变前后两个元素节点的指针指向地址即可,所以添加、删除很快
缺点:含有大量的指针,所以占用的空间比较大;查找元素费时,因为需要遍历链表来查找。
树
每个节点有零个或多个子节点;没有父节点的节点叫根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树
MySQL的数据库索引结构使用的是B+树
哈希
根据key和value直接进行访问的数据结构
堆
可以看做一棵树的数组对象
图
后面在补充 ?