数据结构中的栈结构是一种遵循 后进先出(last in first out)原则的一个有序集合,新添加的元素保存在栈顶,最先插入的元素在栈底。
栈中一些常见的方法:
push(element) 添加新元素到栈顶,也可以一次添加多个。
pop() 移除栈顶元素,同时返回被移除的元素。
peek() 返回栈顶元素,不对栈做任何修改(不会移除栈顶元素)。
isEmpty() 判断栈是否为空,为空返回true,不为空返回false。
size() 返回栈里的元素个数。类似于数组中的length属性。
clear() 清除栈里的所有元素。
栈中大致就是上面的几种操作,下面我们就开始封装一个栈,在JavaScript中封装一个栈有两种思想:
(1)基于数组创建一个栈 。
(2)基于JavaScript对象创建一个栈。
(1)基于数组创建一个栈
//创建一个基于数组的栈
//封装栈类
function MyStack(){
this.items = []; //创建一个数组
//1,向栈添加元素
MyStack.prototype.push = function(element){
for(let i=0;i<arguments.length;i++){
this.items[this.items.length] = arguments[i]
}
return this.items.length;
}
//2,从栈中移除元素
MyStack.prototype.pop = function(){
return this.items.pop();
}
//3,查看栈顶元素
MyStack.prototype.peek = function(){
return this.items[this.items.length - 1];
}
//4,判断栈是否为空
MyStack.prototype.isEmpty = function(){
return this.items.length == 0;
}
//5,获取栈中元素个数
MyStack.prototype.size = function(){
return this.items.length;
}
//6,清空栈元素
MyStack.prototype.clear = function(){
return this.items = [];
}
}
//栈的使用
var s = new MyStack();
s.push(10);
s.push(20);
s.push(30);
console.log(s.peek()); //30
console.log(s.isEmpty()); //false
console.log(s.size()); //3
s.pop();
console.log(s.peek()); //20
console.log(s.size()); //2
s.clear();
console.log(s.isEmpty()) //true
上面就是我基于数组封装的一个栈,关于另一个基于JavaScript对象创建一个栈下次继续哦!!!