数组(array),数组是有序元素的序列,在内存中分配是连续的。
数组的优点:查询速度快,增删慢,适用于频繁查询,增删较少的情况。
链表(linked list),链表由一系列节点Node(也称元素)组成,数据的逻辑顺序是通过链表的指针地址实现,通常情况下,每个节点包括两个部分,一个是存储元素的内存地址,叫数据域,另一个指向相邻节点地址的指针,叫指针域。根据链表的指向不同分为:单向链表、双向链表、循环链表等。
链表的优点:新增节点、删除节点快。
链表缺点:查询速度慢,链表相对于数组多了指针域的开销,内存占用相对较大
栈(Stack),一种特殊的线性表,只能在线性表的一端进行操作,栈顶允许操作,栈底不允许操作,栈的特点是:先进后出。
队列(queue),线性表,先进先出
树,由N(N>=1)个有限节点组成一个具有层次关系的集合,特点:
*每个节点有0或者多个个子节点
*没有父节点的节点称为根节点
*每一个非根节点有且只有一个父节点
*除了根节点外,每个子节点可以分为多个不相交的子树
*右子树永远比左子树大,读取顺序从左往右
二叉树的特点是:每个节点最多有两个子树
堆(heap),怼可以看作是用数组实现的二叉树,他没有父指针或子指针,堆根据“堆属性“排序,”堆属性“决定了树中心节点的位置。
7.散列表(Hash),也叫哈希表,是根据键和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。它利用数组支持按照下标访问的特性,所以散列表其实是数组的一种扩展,由数组演化而来。
散列表首先需要根据key来计算数据存储的位置,也就是数组索引的下标
8.图(Graph):图是一系列顶点(元素)的集合,这些顶点通过一系列边连接起来组成图这种数据结构。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。
图分为有向图和无向图:
有向图:边不仅连接两个顶点,并且具有方向;
无向图:边仅仅连接两个顶点,没有其他含义;