📅  最后修改于: 2023-12-03 14:54:16.108000             🧑  作者: Mango
本文将介绍在 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 中使用循环队列有所帮助!