优先队列(堆)优先级队列支持插入操作和删除操作,进行删除操作时总是删除最小元素,而进行插入操作时,先插入在队列末尾,然后再调整这个元素到一个合适的位置。其实优先级队列只需要删除元素的时候能够删除最小元素即可,这是优先级队列最重要的性质。而对于插入元素,插入位置则并不固定,因此它的实现可以使用链表或者二叉查找树。不过这两种实现都并不是最优的。实现优先级队列最优的办法是使用二叉堆。二叉堆的本质是完全二叉树,但是这棵完全二叉树的存储结构是一个数组,所有结点和它的父节点之间的编号存在严格的数学关系。堆可以分为小根堆和大根堆。所以以下以小根堆为例。堆的结构性和堆序性:结构性:满足完全二叉树。堆序性:父节...