数据结构-栈

91 阅读1分钟

(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;
}