3.8 KiB
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d8250367417b2b2512c60 | Creare una classe Queue | 1 | 301631 | create-a-queue-class |
--description--
Come gli stack, le code sono una raccolta di elementi. Ma a differenza degli stack, le code seguono il principio FIFO (First-In First-Out). Gli elementi aggiunti ad una coda vengono spinti in fondo, o alla fine, della coda, e solo l'elemento nella parte anteriore della coda può essere rimosso.
Potremmo usare un array per rappresentare una coda, ma proprio come per gli stack, vogliamo limitare la quantità di controllo che abbiamo sulle nostre code.
I due metodi principali di una classe coda sono il metodo di accodamento e il metodo di rimozione. Il metodo di accodamento spinge un elemento in fondo alla coda, e il metodo di rimozione rimuove e restituisce l'elemento in testa alla coda. Altri metodi utili sono front, size e isEmpty.
--instructions--
Scrivi un metodo enqueue
che spinge un elemento in fondo alla coda, un metodo dequeue
che rimuove e restituisce l'elemento in testa alla coda, un metodo front
che permette di vedere l'elemento in testa alla coda, un metodo size
che ne mostra la lunghezza, e un metodo isEmpty
per controllare se la coda è vuota.
--hints--
La tua classe Queue
dovrebbe avere un metodo enqueue
.
assert(
(function () {
var test = new Queue();
return typeof test.enqueue === 'function';
})()
);
La tua classe Queue
dovrebbe avere un metodo dequeue
.
assert(
(function () {
var test = new Queue();
return typeof test.dequeue === 'function';
})()
);
La tua classe Queue
dovrebbe avere un metodo front
.
assert(
(function () {
var test = new Queue();
return typeof test.front === 'function';
})()
);
La tua classe Queue
dovrebbe avere un metodo size
.
assert(
(function () {
var test = new Queue();
return typeof test.size === 'function';
})()
);
La classe Queue
dovrebbe avere un metodo isEmpty
.
assert(
(function () {
var test = new Queue();
return typeof test.isEmpty === 'function';
})()
);
Il metodo dequeue
dovrebbe rimuovere e restituire l'elemento in testa alla coda
assert(
(function () {
var test = new Queue();
test.enqueue('Smith');
test.enqueue('John');
return test.dequeue() === 'Smith';
})()
);
Il metodo front
dovrebbe restituire il valore dell'elemento in testa alla coda
assert(
(function () {
var test = new Queue();
test.enqueue('Smith');
test.enqueue('John');
return test.front() === 'Smith';
})()
);
Il metodo size
dovrebbe restituire la lunghezza della coda
assert(
(function () {
var test = new Queue();
test.enqueue('Smith');
return test.size() === 1;
})()
);
Il metodo isEmpty
dovrebbe restituire false
se ci sono elementi nella coda
assert(
(function () {
var test = new Queue();
test.enqueue('Smith');
return !test.isEmpty();
})()
);
--seed--
--seed-contents--
function Queue() {
var collection = [];
this.print = function() {
console.log(collection);
};
// Only change code below this line
// Only change code above this line
}
--solutions--
function Queue () {
var collection = [];
this.print = function() {
console.log(collection);
};
// Only change code below this line
this.enqueue = function(item) {
collection.push(item);
}
this.dequeue = function() {
return collection.shift();
}
this.front = function() {
return collection[0];
}
this.size = function(){
return collection.length;
}
this.isEmpty = function() {
return collection.length === 0 ? true : false;
}
// Only change code above this line
}