2016-06-09 155 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!'); 
    } 
}