📜  循环队列中的元素数 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:54:16.108000             🧑  作者: Mango

循环队列中的元素数 - TypeScript

介绍

本文将介绍在 TypeScript 中实现循环队列及其元素数的计算。循环队列是一种常用的数据结构,它具有固定大小的队列,可以在队列的末尾添加元素,并且在队列的开头删除元素。与普通队列不同的是,循环队列可以利用数组的空间,实现循环利用。

实现循环队列

以下是一个基本的循环队列的 TypeScript 实现:

class CircularQueue<T> {
  private capacity: number;  // 队列容量
  private elements: T[];    // 存储元素的数组
  private front: number;    // 队列头部索引
  private rear: number;     // 队列尾部索引

  constructor(capacity: number) {
    this.capacity = capacity;
    this.elements = new Array<T>(this.capacity);
    this.front = 0;
    this.rear = 0;
  }

  enqueue(element: T): boolean {
    if (this.isFull()) {
      return false;
    }
    this.elements[this.rear] = element;
    this.rear = (this.rear + 1) % this.capacity;
    return true;
  }

  dequeue(): T | undefined {
    if (this.isEmpty()) {
      return undefined;
    }
    const element = this.elements[this.front];
    this.front = (this.front + 1) % this.capacity;
    return element;
  }

  isFull(): boolean {
    return (this.rear + 1) % this.capacity === this.front;
  }

  isEmpty(): boolean {
    return this.front === this.rear;
  }

  size(): number {
    if (this.rear >= this.front) {
      return this.rear - this.front;
    } else {
      return this.capacity - (this.front - this.rear);
    }
  }
}
使用示例
const queue = new CircularQueue<number>(5);

console.log(queue.isEmpty());  // 输出: true

console.log(queue.enqueue(1));  // 输出: true
console.log(queue.enqueue(2));  // 输出: true
console.log(queue.enqueue(3));  // 输出: true

console.log(queue.isFull());   // 输出: false

console.log(queue.enqueue(4));  // 输出: true
console.log(queue.enqueue(5));  // 输出: true

console.log(queue.isFull());   // 输出: true

console.log(queue.enqueue(6));  // 输出: false

console.log(queue.dequeue());  // 输出: 1
console.log(queue.dequeue());  // 输出: 2

console.log(queue.size());     // 输出: 3
结论

通过本文的介绍,我们了解了如何在 TypeScript 中实现循环队列及其元素数的计算。循环队列是一种常用的数据结构,对于解决一些需要保证队列大小的情况非常有用。希望本文对你在 TypeScript 中使用循环队列有所帮助!