js实现反向队列
实现反向队列的思路
反向队列指的是将队列中的元素顺序反转,即最先进入队列的元素变为最后出队的元素。在JavaScript中,可以通过数组模拟队列,利用数组的方法实现反转。
使用数组的reverse方法
数组的reverse方法可以直接反转数组元素的顺序,适用于简单的队列反转需求。

const queue = [1, 2, 3, 4, 5];
queue.reverse();
console.log(queue); // 输出: [5, 4, 3, 2, 1]
手动实现反转
如果不希望直接修改原数组,可以通过循环或递归的方式手动反转队列。

function reverseQueue(queue) {
const reversed = [];
while (queue.length > 0) {
reversed.push(queue.pop());
}
return reversed;
}
const queue = [1, 2, 3, 4, 5];
const reversedQueue = reverseQueue(queue);
console.log(reversedQueue); // 输出: [5, 4, 3, 2, 1]
使用双指针法
双指针法通过交换队列头尾元素实现反转,适用于需要原地反转的场景。
function reverseQueueInPlace(queue) {
let left = 0;
let right = queue.length - 1;
while (left < right) {
[queue[left], queue[right]] = [queue[right], queue[left]];
left++;
right--;
}
return queue;
}
const queue = [1, 2, 3, 4, 5];
reverseQueueInPlace(queue);
console.log(queue); // 输出: [5, 4, 3, 2, 1]
使用递归反转
递归方法通过不断取出队首元素并压入反转后的队列中实现反转。
function reverseQueueRecursive(queue) {
if (queue.length === 0) {
return [];
}
const first = queue.shift();
const reversed = reverseQueueRecursive(queue);
reversed.push(first);
return reversed;
}
const queue = [1, 2, 3, 4, 5];
const reversedQueue = reverseQueueRecursive(queue);
console.log(reversedQueue); // 输出: [5, 4, 3, 2, 1]
注意事项
- 直接使用
reverse方法会修改原数组,如果希望保留原队列,需要先复制一份。 - 手动实现或递归方法的时间复杂度为O(n),空间复杂度取决于实现方式。
- 双指针法适用于需要原地反转的场景,但会修改原队列。






