JS 模拟 队列结构

Code:

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

  /**
   * @class
   */
  class _AQueue {
    /**
     * 构造器
     * @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 {*} 
     */
    get_front() {
      return arr.get_head();
    }

    /**
     * 入队
     * @param {*} el 
     */
    enqueue(el) {
      arr.insert_to_tail(el);
    }

    /**
     * 出队
     * @return {*}
     */
    dequeue() {
      return arr.remove_head();
    }

    /**
     * 将队列转为字符串输出
     * @return {string} 
     */
    to_string() {
      const n = arr.get_size();
      let ans = 'Queue: front [' + arr.get_head();
      for (let i = 1; i < n; i++) {
        ans += (',' + arr.get(i));
      }
      ans += '] tail';
      return ans;
    }
  }
  
  return _AQueue;
})();

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

 

posted @ 2023-06-07 23:29  樊顺  阅读(16)  评论(0编辑  收藏  举报