在计算机科学中,数据结构英语:data structure)是计算机中存储、组织数据的方式。数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。– “维基百科”

1. 链表 

    链表是一种非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的;链表由一系列节点组成,每个节点包含存储数据元素的数据域和存储下一节点地址的指针域。由于不必按顺序存储,链表在插入元素时可以达到O(1),但在查找某一元素时为O(n);
    使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理;但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大;
    单向链表(链表链接方向单向,访问要从头部开始顺序读取);
    双向链表(每个数据节点中都有两个指针,一个指向直接前驱,一个指向直接后继);
    循环链表(表中最后一个节点的指针域指向头节点,整个链表形成一个环);

2. 队列

    先进先出的线性表结构,插入在一端,删除在另一端;

3. 栈

    先进后出的线性表结构,只能在一端进行插入和删除操作

4. 哈希表

    它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表;

5. 堆

    看作一棵树的数组对象,堆中某个节点的值总是不大于或不小于其父节点的值,堆总是一棵完全二叉树;根节点最大的叫大根堆,根节点最小的叫小根堆;

6. 优先队列

    优先队列中,元素被赋予优先级,当访问元素时,具有最高优先级的元素最先删除;常采用堆数据结构来实现;

7. 字典树(非线性结构)

    是哈希树的变种,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高;

8. 树(非线性结构)

    二分查找树(BST,左子树节点都比根节点小,右子树节点都比根节点大);

    平衡二叉树(AVL,它是一棵空树或它的左右两个子树的高度差(平衡因子:结点左子树的深度减去右子树的深度)的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树);

    红黑树(自平衡的二叉查找树,规则1节点是红或黑,规则2根节点黑色,规则3每个叶子节点都是黑色的空节点(NIL),规则4每个红色节点的两个子节点都是黑色(不能有两个连续的红色节点),规则5从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点)(变色、旋转)

9. 图(非线性结构)

    无向图(边没有方向的图);

    连通图(在无向图中,若从顶点i到顶点j有路径相连(当然从j到i也一定有路径),则称i和j是连通的;如果是有向图,那么连接i和j的路径中所有的边都必须同向;如果图中任意两点都是连通的,那么图被称作连通图。如果此图是有向图,则称为强连通图);