优先队列(Priority Queue):特殊的”队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。
完全二叉树实现优先对列图示
堆(优先队列)的两个特性
结构性:用数组表示的完全二叉树
有序性:任一结点的关键字是其子树所有结点的最大值或最小值。
堆的抽象数据类型描述
类型名称:最大堆(MaxHeap)
数据对象集:完全二叉树,每个结点的元素值不小于其子结点的元素值
操作集:最大堆H∈MaxHeap,元素item∈ElementType,主要操作有:
1 2 3 4 5 |
MaxHeap Creat(int MaxSize); //创建一个空的最大堆 Boolean IsFull(MaxHeap H); //判断最大堆H是否已满 insert(MaxHeap H,ElementType item); //将元素item插入最大堆H Boolean IsEmpty(MaxHeap H); //判断最大堆H是否为空 ElementType DeleteMax(MaxHeap H); //返回H中最大元素 |