Ich stieß auf diese Frage auf ein Scheininterview und ich bin mir nicht sicher, ob ich überhaupt verstehe, worum es geht. Ich soll eine Funktion schreiben, die eine Warteschlange hat, aber die Eigenschaften eines Stapels?Schreiben Sie eine Funktion, die das Stapelverhalten widerspiegelt, aber mit einer Warteschlange ...?
Hier ist meine grundlegende Implementierung eines Stapels:
function Stack() {
this._size = 0;
this._storage = {};
}
Stack.prototype.push = function(data) {
var size = this._size++
this._storage[size] = data;
}
Stack.prototype.pop = function() {
var size = this._size,
deletedData;
if (size) {
deletedData = this._storage[size];
delete this._storage[size];
this._size--;
return deletedData;
}
};
Und das ist meine Umsetzung der Warteschlange:
function Queue() {
this._newestIndex = 1;
this._oldestIndex = 1;
this._storage = {};
}
Queue.prototype.size = function() {
console.log(this._newestIndex - this._oldestIndex);
}
Queue.prototype.enqueue = function(data) {
this._storage[this._newestIndex] = data;
this._newestIndex++;
}
Queue.prototype.dequeue = function() {
var oldestIndex = this._oldestIndex;
var newestIndex = this._newestIndex;
var datatoDelete;
if (newestIndex !== oldestIndex) {
datatoDelete = this._storage[oldestIndex]
delete this._storage[oldestIndex];
this._oldestIndex++;
return datatoDelete;
}
}
Wie könnte ich dies in meinem Beispiel implementieren?
Danke.
Was ist falsch daran, ein Array dafür zu verwenden? – dandavis
Wir stellen eine Frage wie diese, wo Arbeit, aber die Antwort erfordert die Verwendung von zwei Warteschlangen ... – JordanHendrix