实现如下
function Queue() {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.first = first;
this.end = end;
}
function process(cost,name){
this.cost = cost;
this.name = name;
this.remain = 0;
}
function enqueue(element) {
this.dataStore.push(element);
}
function dequeue() {
return this.dataStore.shift();
}
function first() {
return this.dataStore[0].name;
}
function end() {
return this.dataStore[this.dataStore.length - 1].name;
}
var q = new Queue();
var p1 = new process(1,"进程1");
var p2= new process(2,"进程2");
var p3= new process(3,"进程3");
var p4= new process(4,"进程4");
var p5= new process(5,"进程5");
var q = new Queue();
q.enqueue(p1);
q.enqueue(p2);
q.enqueue(p3);
q.enqueue(p4);
q.enqueue(p5);
console.log("队列头: " + q.first());
console.log("队列尾: " + q.end());
var limit = 0;
while(limit==0){
var temp = new process(0,"替换者");
temp = q.dataStore[0];
console.log(q.dataStore[0].name+"正在执行");
if(q.dataStore[0].cost-1>0){
q.dataStore[0].cost--;
q.dequeue();
q.enqueue(temp);
}
else{
console.log(q.dataStore[0].name+"已经完成");
q.dequeue();
if(q.dataStore.length==0){
break;
}
}
}