栈stack
- 特点:又称为堆栈,入口和出口在同一侧。即先进去的后边才能拿出来。
- 取出下面的元素要先拿出排在它之前的元素才行。
-且进行查询,增加,删除都在同一侧进行操作。所以栈(stack)结构
2.队列queue
特点,先进先出。因为他是有一个入口和出口,先进去的先出来。stack的出口和入口是同一个。
例如–进入队列:123、那么出队列时:任然是 123 符合先进后出
栈stack:进栈:123 出栈:321 符合先进后出
3.数组Array
特点:查询快(有索引),增删慢
···查询快:因为数组的地址是连续的、有索引。所以可以通过它的索引快速的进行查找
···增删慢: 数组的增删操作,需要复制一个新的数组来辅助操作。例如:要删除原数组的一个元素,则先新创建一个数组,长度为当前数组长度-1
其次把当前数组的的元素,根据索引复制到新的数组中对应的位置。
之后再将原数组的地址值赋值给新数组,最后对原数组进行销毁(回收处理)。
【注:】{所以说增删很麻烦,要在堆内存中频繁的(新建,复制、销毁)数组、所以数组的增删慢}
4.链表 Linked list
特点:增删快,查询慢
查询慢:因为链表中的地址不是连续的,且没有索引。所以每次进行查询元素都必须是从头元素进行遍历。所以效率低下,查询慢
增删快:因为链表结构在增加删除元素时,对链表的整体结构是没有影响的。
【单向链表】
链表的每一个元素也被称为一个节点:
节点的结构:如下是。单向链表是无序的。
每个节点豆包括这三部分:
自己的地址 数据 下一个节点的地址
【双向链表】:
在单向链表的基础上又多了一条链接,即双向链表中有两条链接。其中多出来的一条用来记录元素的顺序。所以说双向链表是一个有序的集合。
其次双向链表可以连城一圈。即尾元素的下一个节点地址指向首元素的自身地址。
5.红黑树
红黑树接近于平衡二叉树
特点趋近于平衡二叉树
查询速度非常快
查询叶子节点的 最大次数和最小次数不能超过2倍
约束:节点可以是红色或者黑色
··根节点必须是黑色的
··叶子节点(空节点)是黑色的
··每个红色节点的子节点都是黑色的
··任何一个节点到其每一个叶子节点的所有路径上,黑色节点的数量是相等的。