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 @ 2023-06-07 14:20  樊顺  阅读(14)  评论(0编辑  收藏  举报