程序=数据结构+算法

数据结构的划分：
    1、线性表结构：
        |-栈
        |-队列
        |-数组
        |-链表
    2、树型结构
        二叉树
        ....
    3、图结构
    4、堆结构
    5、散列表结构

线性表结构-栈和队列
    栈结构：
        先进后出，后进先出。
    队列：
        先进先出，后进后出。
线性表结构-数组和链表
    数组：
        有索引，查询速度快，增删速度慢。
    链表：
        没有索引，每个链表元素都至少有一个指向前一个或后一个元素地址的指针。


List集合的底层数据结构就是线性表
    List集合接口有很多的实现类，用来实现：
        数组    [ArrayList]
        栈   Stack
        队列  Queue
        链表  [LinkedList]
ArrayList类是List集合的实现类，底层使用的是动态数组实现的结合

LinkedList类是List集合的实现类，底层使用的是双向链表
LinkedList特有的方法
    addFirst(E e) 在集合的开头位置添加指定的元素
    addLast(E e) 在集合的末尾位置添加指定的元素
    getFirst(); 获取头元素
    getLast()   获取尾部元素
    removeFirst()  移除头元素
    removeLast()   移除尾部元素
LinkedList自己就可以实现三种数据结构：
    链表
    栈
    队列
