JS 模拟 栈结构

Code:

/**
 * 栈结构(基于动态数组)
 * @class
 */
var AStack = (function() {
  /**
   * 栈容器
   * @type {DArray}
   */
  let arr;

  /**
   * 内部栈类
   * @class
   */
  class _AStack {
    /**
     * 构造器
     * @constructor
     * @param {number} [capacity] 
     */
    constructor(capacity) {
      arr = new DArray(capacity);
    }

    /**
     * 获取元素个数
     * @return {number} 
     */
    get_size() {
      return arr.get_size();
    }

    /**
     * 获取容器的容量
     * @return {number} 
     */
    get_capacity() {
      return arr.get_capacity();
    }

    /**
     * 判断栈是否为空
     * @return {boolean} 
     */
    is_empty() {
      return arr.is_empty();
    }

    /**
     * 推入新元素入栈
     * @param {*} el 
     */
    push(el) {
      arr.insert_to_tail(el);
    }

    /**
     * 弹出栈顶元素
     * @return {*}
     */
    pop() {
      return arr.remove_tail();
    }

    /**
     * 查看栈顶元素
     * @return {*} 
     */
    peek() {
      return arr.get_tail();
    }

    /**
     * 字符串化输出
     * @return {string}
     */
    to_string() {
      const n = arr.get_size();
      let ans = `Stack: [${n > 0 ? arr.get(0) : ''}`;
      for (let i = 1; i < n; i++) {
        ans += (',' + arr.get(i));
      }
      ans += ('] top');

      return ans;
    }
  }
  
  return _AStack;
})();

注:DArray类的实现(代码),请点击 这里

 

posted @   樊顺  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示