stack 数据结构

栈定义 

栈:后进先出(永远从栈顶取元素)LIFO last-in-first-out
 

栈实现

class Stack {
  constructor() {
    this.items = []
    this.size = 0 //元素个数

  }
  /**
   * 压栈:栈顶增加一个元素,并且个数+1
   */
  push(item) {
    this.items[this.size++] = item

  }
  /**
   * 出栈
   */
  pop() {
    // 删除数组的最后一个 个数-1
    let top = this.items[--this.size]
    this.items.length = this.size
    return top


  }
  /**
   * 查看栈顶元素
   */
  peek() {
    return this.items[this.size - 1]

  }
  /**
   * 判断栈是否为空
   */
  isEmpty() {
    return this.size === 0

  }

  /**
   * toString 方法
   */
  toString() {

  }



}
View Code

用数组模拟栈:

const  arr=[]

arr.push() 压栈   arr.pop() 出栈   arr[arr.length-1] 查看栈顶元素

栈的例子

判断回文数

/**
 * 判断是否是回文数
 * @param {string} str 
 * @returns{boolean}
 */
function isPalindRome(str) {
  const arr = [] //用数组来模拟栈结构 
  let str1 = '' //逆序str 
  for (const char of str) {
    arr.push(char) //入栈操作
  }
  while (arr.length > 0) {
    str1 += arr.pop() // 出栈操作 arr改变
  }
  return str === str1

}

猜你喜欢

转载自www.cnblogs.com/xiaoliziaaa/p/13386115.html