协慌网

登录 贡献 社区

如何在 JavaScript 中实现堆栈和队列?

在 JavaScript 中实现堆栈和队列的最佳方法是什么?

我正在寻找 shunting-yard 算法,并且我将需要这些数据结构。

答案

var stack = [];
stack.push(2);       // stack is now [2]
stack.push(5);       // stack is now [2, 5]
var i = stack.pop(); // stack is now [2]
alert(i);            // displays 5

var queue = [];
queue.push(2);         // queue is now [2]
queue.push(5);         // queue is now [2, 5]
var i = queue.shift(); // queue is now [5]
alert(i);              // displays 2

摘自 “您可能不知道的 9 条 JavaScript 技巧

Javascript 具有 push 和 pop 方法,可对普通 Javascript 数组对象进行操作。

对于队列,请看这里:

http://safalra.com/web-design/javascript/queues/

可以使用数组对象的 push 和 shift 方法或 unshift 和 pop 方法在 JavaScript 中实现队列。尽管这是实现队列的一种简单方法,但对于大型队列而言效率非常低 - 因为这些方法在数组上运行,所以 shift 和 unshift 方法每次调用时都会移动数组中的每个元素。

Queue.js 是 JavaScript 的一种简单高效的队列实现,其出队功能以固定的固定时间运行。结果,对于更大的队列,它可能比使用数组快得多。

数组。

堆:

var stack = [];

//put value on top of stack
stack.push(1);

//remove value from top of stack
var value = stack.pop();

队列:

var queue = [];

//put value on end of queue
queue.push(1);

//Take first value from queue
var value = queue.shift();