栈定义
栈:后进先出(永远从栈顶取元素)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() { } }
用数组模拟栈:
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 }