编程|js数据结构学习---优先队列

text":"3.优先队列在插入一个元素时会考虑数据的优先集
3.1队列需考虑的问题元素既包含数据又包含优先级
在插入时 , 会根据优先级进行插入
3.队列操作的实践function PriorityQueue () {
//在PriorityQueue重新创建了一个类:可以理解成内部类 , 也可以理解为结构体
function QueueElement (element priority) {
this.element = element
this.priority = priority

this.items = [

【编程|js数据结构学习---优先队列】PriorityQueue.prototype.enqueue = function (element priority) {
var queueElement = new QueueElement(element priority)
if (this.items.length == 0) {
this.items.push(queueElement)

else {
var added = 0
for (var i = 0; i < this.items.length; i++) {
if (queueElement.priority >= this.items[i
.priority) {
this.items.splice(i 0 queueElement)
added = 1
break;


if (!added) {
this.items.push(queueElement)



//移除队首元素
PriorityQueue.prototype.dequeue = function () {
return this.items.shift()

PriorityQueue.prototype.front = function () {
return this.items[0


PriorityQueue.prototype.isEmpty = function () {
if (this.items.length == 0)
return false
else return true

PriorityQueue.prototype.size = function () {
return this.items.length

PriorityQueue.prototype.toString = function () {
return this.items.toString()


[数组splice

  • array.splice(53)删除从指定位置开始的多少个元素:删除从下标5开始到下标7的元素
  • array.splice(50321)在指定位置插入元素:5代表从下标5开始插入元素 , <=0表示插入元素 , 321代表插入的元素值
  • array.splice(53'a''b''c')修改指定位置的元素:5代表开始位置 , 3代表修改从开始位置后多少个元素 , abc代表修改后的值(注意:当第二个参数值大于指定修改后的值时 , 会将数组中的元素删除例如:当第一参数为5 , 第二参数为5 , 修改的值为‘a’'b''c'(n=3)时 , 数组从下标5到下标7的元素为abc而数组下标8和下标9的元素被删除 。 当第二个参数小于修改的值个数n时 , 会根据n将数组从指定下标开始修改n个值)
"