-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy path91-Queue.js
74 lines (60 loc) · 1.38 KB
/
91-Queue.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// ----------- Implementacion con Arrays -------------------
class Queue {
constructor(){
this.dataStore = [];
this.empty = true;
}
enqueue(element){
this.dataStore.push(element);
this.empty = false;
}
dequeue(){
this.dataStore.shift();
if(this.dataStore.length == 0){
this.empty = true;
}
}
isEmpty() {
return this.empty;
}
print(){
console.log(this.dataStore);
}
itemExists(element){
return this.dataStore.indexOf(element) > -1;
}
}
// ----------- Implementacion con Nodos -------------------
class Node {
constructor (data, nextNode) {
this.data = data;
this.next = nextNode;
}
}
class Queue {
constructor() {
this.top = new Node();
}
// Añade un elemento al final de la cola
add(value) {
let auxNode = this.top;
while (auxNode.next !== null) {
auxNode = auxNode.next;
}
auxNode.next = new Node(value);
}
// Elimina el primer elemento de la cola y lo devuelve
remove() {
let aux = this.top;
this.top = this.top.next;
return aux;
}
// Retorna el primer elemento de la cola sin eliminarlo
peek() {
if (!this.top) return null;
return this.top;
}
isEmpty() {
return this.top == null;
}
}