2016-06-09 99 views
0

任何人都可以告訴我。如何使用2個堆棧實現隊列。 具體來說,實施入隊和出球方法。使用2堆棧實現隊列

它會有所幫助,如果你們告訴我,在PHP或JavaScript編程

+0

與其要求某人爲您提供解決方案,請描述您已經嘗試過的內容以及任何研究的結果。 – user861594

+0

我知道如何在C語言中它..我看到很多例子搜索谷歌...但不知道如何做到這一點在PHP ....這就是爲什麼我問男人 –

回答

1

這是一個個人的例子,我敢肯定,這可能是更優化,但它允許在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!'); 
    } 
}