/data-structure

data structure

Primary LanguageJavaScriptMIT LicenseMIT

  • 栈是一种遵从后进先出(LIFO)原则的有序集合。
  • 新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。
  • 案例:实现历史记录

保护数据结构内部元素 —— 私有属性

  • 下划线命名约定
    • 只是一种约定,不能真正保护数据
  • 利用Symbol类型不可变的特性,实现属性
    • Symbol类型不可变,每次用Symbol创建的数据均不相同
    • 普通JS方法无法枚举Symbol属性值
    • 外部拿不到Symbol数据的引用,即认为拿不到属性本身
    • 枚举Symbol需要用 Object.getOwnPropertySymbols 方法
    • 能被破解
  • 利用WeakMap弱引用不可枚举的特性,实现属性
    • 靠谱
  • ECMAScript类属性提案

队列

  • 队列是一种遵循先进先出(FIFO)原则的有序集合。
  • 队列在尾部添加新元素,并从顶部移除元素。
  • 案例:击鼓传花

双端队列

  • 允许同时从前端和后端添加和移除元素的特殊队列。
  • 案例:回文检查