2016-06-09 12 views
0

Kann mir jemand sagen. Wie man eine Warteschlange mit 2 Stapeln implementiert. Implementieren Sie speziell die Enqueue- und Dequeuer-Methoden.Implementieren Warteschlange mit 2 Stapeln

wird es hilfreich, wenn ihr mir sagen, in PHP oder JavaScript

Programmierung
+0

Anstatt jemanden zu bitten, Ihnen eine Lösung zu bieten, beschreiben Sie, was Sie bereits versucht haben und die Ergebnisse einer Untersuchung. – user861594

+0

ich weiß, wie man es in der c-Sprache di .. ich sah viele Beispiele, indem ich auf Google suche ... aber weiß nicht, wie man das in php macht .... deshalb fragte ich Mann –

Antwort

1

Hier ist ein persönliches Beispiel, ich bin sicher, dass es mehr optimiert werden könnte, aber es ermöglicht Warteschlange dequeue und Peek-Funktionalität in JS.

function processData(input) { 
    let stackOne = []; 
    let stackTwo = []; 
    let parsableInput = input.split('\n'); 

    for(let i = 1; i < parsableInput.length; i++) { 
     // handle 1 push 
     if (parsableInput[i][0] === '1') { 
      enqueue(stackOne, stackTwo, parsableInput[i].slice(2)); 
     } 
     // handle 2 
     if (parsableInput[i] === '2') { 
      dequeue(stackTwo); 
     } 
     // handle 3 
     if (parsableInput[i] === '3') { 
      console.log(peek(stackTwo)); 
     } 
    } 
} 

function enqueue(stackOne, stackTwo, queuedValue) { 
    while(stackTwo.length !== 0) { 
     stackOne.push(stackTwo.pop()); 
    } 

    stackOne.push(queuedValue); 

    while(stackOne.length !== 0) { 
     stackTwo.push(stackOne.pop()); 
     } 
} 

function dequeue(stackTwo) { 
    return stackTwo.pop(); 
} 

function peek(stackTwo) { 

    let stringToBeParsed = stackTwo[stackTwo.length - 1]; 
    let parsedString = stringToBeParsed.slice(0, stringToBeParsed.length); 

    if (parsedString) { 
     return parsedString; 
    } else { 
     console.log('Error: there is nothing to peek at!'); 
    } 
}