栈 stack
1.运算受限的线性表,其限制是允许在标的一端进行插入和删除操作,不允许在其他任何位置操作
2
.先进后出
3.栈的入口和出口都是栈的
顶端位置
4.
压栈
: ==> 存元素
5.
弹栈
: ==> 取元素
队列 queue
1.运算受限的线性表,==>仅在一段插入,在另一端删除
2.
先进先出
(FIFO)--> 入队 + 出队
3.队列的
出入口各站一侧
数组 Array
1.有序元素列,==> 内存中开辟一段连续空间,存放元素( 所以查询快些 )
2.查询块==> 通过
index 快速
访问指定位置上的元素
3.
增删元素慢==> 需要创建新数组
链表 linked list
1.由一系列结点node组成,结点在运行时动态生成.每个结点包含两个部分: 存储数据元素的数据域,存储下一个结点地址的指针域(包括单向链表 & 双向链表)
2.多个结点之间,通过地址进行连接
3.
查找元素慢
==> 需要通过连接的结点,依次向后查找置顶元素
4.
增删元素块
==> 只需修改连接下一个元素的地址即可
5.java中对象没有任何地址值指向,这个对象就被标记为一个垃圾,等下次垃圾回收器工作的时候 ,就会把他回收
红黑树
1.二叉树==> binary tree 每个结点不超过2的有序树
2.根结点 左子树 右子树
3.红黑树就是平衡的二叉查找树