一. JS数据结构实现: 栈和队列
1). 栈与队列的理解
栈: 遵循后进先出(LIFO)原则的有序集合。新添加的或是待删除的元素都保存在栈顶,而另一端我们称作栈底。(压栈)
队列: 遵循先进先出(FIFO)原则的有序集合,队列从尾部添加新元素,从顶部移除元素
2). 栈与队列的行为
1. 栈
push(element): 添加一个或是几个新元素到栈顶
pop(): 移除栈顶的元素,同时返回被移除元素
peek(): 返回栈顶的元素,但并不对栈顶的元素做出任何的修改
size(): 返回栈的元素个数
isEmpty(): 检查栈内是否有元素,如果有返回true,没有返回false
clear(): 清除栈里的元素
2. 队列
enqueue(element): 向队列尾部添加一个(或是多个)元素。
dequeue(): 移除队列的第一个元素,并返回被移除的元素。
front(): 返回队列的第一个元素——最先被添加的也是最先被移除的元素。队列不做任何变动。
size(): 返回队列的长度。
isEmpty(): 检查队列内是否有元素,如果有返回true,没有返回false
clear(): 清除队列里的元素
## 3). 自定义栈
(function (window) { let items = [] function Stack() { } Stack.prototype.push = function (el) { items.push(el) } Stack.prototype.pop = function () { return items.pop(); } Stack.prototype.peek = function () { return items[items.length - 1] } Stack.prototype.size = function () { return items.length } Stack.prototype.isEmpty = function () { return items.length === 0 } Stack.prototype.clear = function () { items = [] } Stack.prototype.toString = function () { return items.toString() + ‘ ‘ + ‘Stack‘ } window.Stack = Stack })(window)
4). 自定义队列
(function (window) { let items = [] function Queue() { } Queue.prototype.enqueue = function (el) { items.push(el) } Queue.prototype.dequeue = function () { return items.shift() } Queue.prototype.front = function () { return items[0] } Queue.prototype.size = function () { return items.length } Queue.prototype.isEmpty = function () { return items.length === 0 } Queue.prototype.clear = function () { items = [] } Queue.prototype.toString = function () { return items.toString() + ‘ ‘ + ‘Queue‘ } window.Queue = Queue })(window) const obj1 = {} const obj2 = {} const obj3 = {} obj1.next = obj2 obj2.next = obj3
原文:https://www.cnblogs.com/baixiaoxiao/p/11061105.html