一、数组
-
数组存放在一块连续的内存空间中;
-
由有限个相同类型的变量所组成的有序集合,按一定的顺序储存;
-
查找速率快,利用索引的方式进行查找,第一的元素的索引为0,插入和删除的速率较慢,因为需要移动大量的节点;
-
定义动态数组
-
数组常用方法主要为增(add)删(remove)改(set)查(put)长度(size)
二、链表
-
链表中的元素可存储在内存的任何地方(每个元素存储了下一个元素的地址),无序储存;
-
插入和删除速率较快,但查找速率慢;
-
在我们需要读取链表某一个元素的时候,不能直接读取,因为不知道它所处的地址,必须先访问第一个元素,从中获取第二个元素的地址,以此类推直到访问到该元素,所以效率很低;但需要同时读取所有元素时,链表的效率很好。
-
可用于创建树
-
常用方法用数组相似
三、队列
-
队列是一种线性逻辑结构,可以用数组实现,也可以使用链表实现。
-
队列包含入队和出队的事件,遵循先入先出的原则(FIFO)
-
主要方法:
-
增加 add(),offer() 取出头结点 remove(),poll() 获得头结点 element()、peek() 大小 size() 特点 先进先出
四、栈
-
栈是一种先进后出的数据结构,数组和链表都可以生成栈。当数据进入到栈时会按照规则压入到栈的底部,再次进入的数据会压在第一次的数据上面,以此类推。
-
在取出栈中的数据的时候会先取出最上面的数据,所以是先进后出。
-
由于数组和链表都可以组成栈,所以操作特点就需要看栈是由数组还是链表生成的了,然后就会继承相应的操作特点。
五、树
树是典型的非线性结构,在树的结构中,有且仅有一个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有一个前驱结点,而且可以有两个以上的后继结点
六、图
一种非线性结构。在图形结构中,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系堆
七、堆
堆是一种特殊的树形数据结构,每个结点都有一个值,特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆