<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function Queue(){
let item = [];
this.enqueue=function(element){
item.enqueue(element);
}
// rem 第一项
this.dequeue=function(){
item.shift();
}
// 返回第一个
this.front=function(){
return item[0];
}
// 检查栈是否为空
this.isEmpty= function(){
return (item.length == 0);
}
// 长度
this.size= function(){
return item.length;
}
// 打印队列
this.print=function(){
console.log( item.toString() );
}
}
function PriorityQueue(){
item = [];
// element 元素 priorty 优先级
function QueueElement ( element , priority ){
this.element = element;
this.priority = priority;
}
// 检查栈是否为空
this.isEmpty= function(){
return (item.length == 0);
}
this.enqueue = function( element,priority ){
let queueElement = new QueueElement( element , priority );
var added = false;
if ( item.length !=0 ){
for( let i=0; i<item.length; i++){
// 通过遍历 当前的 优先级也就是 ( item中 )priority 是否大于 我们要插入的值的 优先级
if( queueElement.priority < item[i].priority ){ //
added = true;
item.splice( i , 0 , queueElement ); // splice 在指定 i 位置前 插入我们的元素
break ;
}
}
if( added == false ){
// 在 否的情况下 直接 在数组末尾进行插入就 OK
item.push( queueElement );
}
}else{
item.push(queueElement)
}
// 输出-> 打印
this.print = function(){
for( let i=0; i<item.length; i++){
console.log( `${item[i].element} - ${item[i].priority}` )
}
console.log(item.length)
}
}
}
let priorityQueue = new PriorityQueue();
priorityQueue.enqueue('johh',2);
priorityQueue.enqueue('tom',3);
priorityQueue.enqueue('motn',1);
priorityQueue.enqueue('motn',2);
priorityQueue.print()
</script>
</body>
</html>