Compare commits

...

3 Commits

Author SHA1 Message Date
Meiron Yotvat
e024c4ac6f
Merge da2e9aa92b into 2c67b48c21 2024-04-25 08:22:32 +08:00
Oleksii Trekhleb
da2e9aa92b
Merge branch 'master' into master 2020-12-15 18:23:52 +01:00
meironY2008
a310651dc3 finish 2020-09-22 15:41:46 +03:00
2 changed files with 61 additions and 1 deletions

View File

@ -1,4 +1,4 @@
import PriorityQueue from '../PriorityQueue';
import PriorityQueue from '../new-priorety-queue';
describe('PriorityQueue', () => {
it('should create default priority queue', () => {

View File

@ -0,0 +1,60 @@
export default class PriorityQueue {
constructor() {
this.arr=[];
}
isEmpty(){
return this.arr.length===0;
}
peek(){
return this.isEmpty() ? null : this.arr[this.arr.length - 1][0];
}
add(item , priority = 0){
if(this.isEmpty()){
return this.arr =[[item,priority]];
}
for( let i = 0; i < this.arr.length; i++ ){
if(this.arr[i][1] <= priority ){
this.arr.splice(i,0,[item,priority]);
return this.arr;
}
}
return this.arr.push([item,priority]);
}
poll(){
if(this.isEmpty()){
return null;
}
return this.arr.pop()[0];
}
changePriority(item, priority = 0) {
if(this.isEmpty()) {
return null;
}
for (let i = 0; i < this.arr.length; i++) {
if (this.arr[i][0] === item) {
this.arr.splice(i, 1);
this.add(item, priority);
return this.arr;
}
}
return null;
}
hasValue(item) {
if(this.isEmpty()) {
return false;
}
for (let i = 0; i < this.arr.length; i++) {
if (this.arr[i][0] === item) {
return true;
}
}
return false;
}
}