一:队伍
只能在一端添加元素,另一端删除元素
链表可以在任意位置添加删除元素
1.链表实现
1.1创建队伍接口的链表实现类和节点类(内部类)
环形链表,自己指向自己
1.2.实现队伍方法
只要实现,只能尾插,头删除即可
修改:
尾部添加,先判断队伍是否满了
头部删除,判断队伍是否为空
2.环形数组实现
二:栈
队伍两端操作(头删尾插):环链(头结点,尾节点)
栈仅在一端操作 :单链(栈链表仅需要头结点)
1.链表实现
(1)判断栈空栈满
(2)添加节点-头部添加
(3)删除节点-头删
(4)获取栈顶元素
2.数组实现
三:堆
1.堆介绍
1.1.大/小根堆:
2.堆的存储结构
完全二叉树:采用顺序存储结构(数组)的形式来表示完全二叉树,能够充分利用存储空间。
3.建堆
3.1 定义:
如图,堆中的元素排列不符合大顶堆的定义,将其改为符合大顶堆的过程称为建堆。
3.2 建堆算法
下潜:改节点与其子节点比较,小的往下放
如图中:1和6交换
总的交换次数: