谁能告诉我。如何使用2个堆栈实现队列。
具体来说,实现入队和出队方法。

如果你们在php或JavaScript编程中告诉我,这将有所帮助

最佳答案

这是一个个人示例,我敢肯定它可以进行更优化,但是它允许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!');
    }
}

09-06 01:49