一、棧:後入先出()
棧結構實現:
function Stack() {
var items = []; // 使用私有變量,避免被外部操作
// push 棧頂添加元素
this.push = function(ele) {
items.push(ele);
}
// pop 移除棧頂元素 需返回移除的元素 因爲可能要用到
this.pop = function() {
return items.pop();
}
// peek 檢查棧頂
this.peek = function() {
return items[items.length - 1];
}
// isEmpty 檢查棧是否爲空
this.isEmpty = function() {
return items.length == 0;
}
// clear 清除棧
this.clear = function() {
items = [];
}
// size 獲取棧大小
this.size = function() {
return items.length;
}
// getItems 檢查items
this.getItems = function() {
return items;
}
}
// 使用棧
var stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.getItems());
// stack.pop(); // 使用pop會使整個數組改變,上方的打印也會受影響
console.log(stack.peek());
console.log(stack.isEmpty());
console.log(stack.size());
stack.clear()
console.log(stack.getItems());
使用案例:十進制轉二進制
思路:使用餘數法 ,將所有餘數依次放入棧中,棧頂爲最後剩餘的數,最後依次pop棧中
實現: