- 定義
棧是一種遵從后進(jìn)先出(LIFO)原則的有序集合。
在棧里,新元素都靠近棧頂,舊元素都接近棧低。比如疊書本:
來自《javascript數(shù)據(jù)結(jié)構(gòu)與算法》
- 棧的創(chuàng)建
- 先聲明一個(gè)類用來表示棧
function Stack() {
//各種屬性和方法的聲明
}
- 實(shí)現(xiàn)push方法
//push() 方法將一個(gè)或多個(gè)元素添加到數(shù)組的末尾(棧頂),并返回?cái)?shù)組的新長(zhǎng)度
this.push = function(element) {
items.push(element);
};
- 實(shí)現(xiàn)pop方法
//pop()方法移除棧頂?shù)脑兀瑫r(shí)返回被移除的元素。
this.pop = function() {
return items.pop();
};
- 實(shí)現(xiàn)peek方法
返回棧頂?shù)脑兀〝?shù)組末尾元素),不對(duì)棧做任何修改,不會(huì)移除棧頂?shù)脑兀瑑H僅返回它。
this.peek = function(){
return items[items.length-1];
}
- isEmpty()方法。如果棧為空的話,返回true,否則就返回false
this.isEmpty = function() {
return items.length === 0;
}
- size()方法。返回棧里的元素個(gè)數(shù)。
this.size= function() {
return items.length;
}
- clear()方法。移除棧里的所有元素。
this.clear = function() {
items = [];
}
這樣我們就完成了一個(gè)棧的創(chuàng)建。全部代碼:
function Stack() {
var items = [];
this.push = function(element) {
items.push(element);
};
this.pop = function() {
return items.pop();
};
this.peek = function() {
return items[items.length-1];
};
this.isEmpty = function() {
return items.length === 0
};
this.size = function() {
return items.length;
};
this.clear = function() {
items = [];
};
this.print = function() {
console.log(items);
};
}
var stack = new Stack();
console.log(stack.isEmpty());
stack.push(1);
stack.push(2);
stack.print(); //"[1,2]"
參考學(xué)習(xí):
學(xué)習(xí)javascript數(shù)據(jù)結(jié)構(gòu)與算法