2016-05-23 21 views
1

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.

+1

Was ist falsch daran, ein Array dafür zu verwenden? – dandavis

+0

Wir stellen eine Frage wie diese, wo Arbeit, aber die Antwort erfordert die Verwendung von zwei Warteschlangen ... – JordanHendrix

Antwort

0

Ich bin nicht sicher, ob ich auch verstehen, was es

Nun fragt, müssen Sie einen Stapel erstellen Warteschlange verwenden, das heißt, vorausgesetzt, dass Sie, dass Sie Warteschlangendatenstruktur und die Verwendung der Funktionen gegeben haben In den Datenstrukturen der Warteschlange müssen Sie einen Stapel erstellen.

die Struktur Ihres Stack-Code wird daher wie folgt aussehen:

function push(){ 
//code for push but using queue data-structures functions 
} 

function pop(){ 
//code for pop but using queue data-structures 
} 

Hinweis: 1) Durch eine Warteschlange mit einem Stapel zu erstellen, müssen Sie entweder „Pop“ oder „Push machen "Betrieb teuer. Mit teuren meine ich, jetzt ist entweder pop-Betrieb nicht in o (1) oder Push-Betrieb wird nicht in O (1).

2) Sie benötigen zwei Warteschlangen-Datenstrukturen, um Stack zu implementieren.