數據結構中的棧結構是一種遵循 後進先出(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對象創建一個棧下次繼續哦!!!