(1)栈(stack):是一种运算受限的线性表,后进先出(LIFO)
- 仅允许在表的一端进行插入和删除运算,这一端被称为栈顶,相对地,把另一端称为栈底
- 进栈/入栈/压栈:向一个栈插入新元素
- 出栈/退栈:从一个栈删除元素 (2)基于数组实现栈:
class Stack{
// 属性
constructor(){
this.stack = [];
}
// 方法
// 1.压栈
push(item){
this.stack.push(item);
}
// 2.出栈
pop(){
this.stack.pop();
}
// 3.查看栈顶元素
peek(){
this.stack[this.stack.length - 1];
}
// 4.判断栈是否为空
isEmpty(){
return this.stack.length === 0;
}
// 5.获取栈内元素个数
size(){
return this.stack.length;
}
// 6.返回字符串形式的栈内元素数据
toString(){
let str = '';
for(let item of this.stack){
str += item + ' ';
}
return str;
}
}
// 封装十进制转二进制
function dec2bin(decNumber){
var stack = new Stack(); // 创建一个栈
var remainder; // 余数
while(decNumber > 0){ // 将余数存入栈中
remainder = decNumber % 2;
decNumber = Math.floor(decNumber / 2);
stack.push(remainder);
}
var res = '';
while(!stack.isEmpty()){ // 将余数取出并拼接
res += stack.pop();
}
return res;
}