数据结构-JavaScript实现顺序队列和双向队列
程序员文章站
2024-03-16 16:09:28
...
// 顺序队列,使用了js里的Array
class Queue {
data: any[];
size: number;
constructor(maxlength: number) {
this.data = [];
this.size = maxlength;
}
push(value: any) {
if (this.getLength() < this.size) {
this.data.push(value);
return;
}
console.error('The queue is full!');
}
out(): any {
if (!this.isEmpty()) {
return this.data.shift();
}
}
getLength(): number {
return this.data.length;
}
isEmpty() {
return this.data.length === 0;
}
clear() {
this.data.length = 0;
}
print() {
for (const iterator of this.data) {
console.log(iterator)
}
}
}
// 双向队列
// 其实就是多了一个头部入队和尾部出队的方法
class Dique {
data: any[];
size: number;
constructor(maxlength: number) {
this.data = [];
this.size = maxlength;
}
/**
* 头部入队
* @param value 要插入的值
*/
headPush(value: any) {
if (this.getLength() < this.size) {
this.data.unshift(value);
return;
}
console.error('The queue is full!');
}
/**
* 尾部入队
* @param value 要插入的值
*/
tailPush(value: any) {
if (this.getLength() < this.size) {
this.data.push(value);
return;
}
console.error('The queue is full!');
}
/**
* 头部出队
*/
headOut(): any {
if (!this.isEmpty()) {
return this.data.shift();
}
}
/**
* 尾部出队
*/
tailOut(): any {
if (!this.isEmpty()) {
return this.data.pop();
}
}
getLength(): number {
return this.data.length;
}
isEmpty() {
return this.data.length === 0;
}
clear() {
this.data.length = 0;
}
print() {
for (const iterator of this.data) {
console.log(iterator)
}
}
}
上一篇: 1256: 奇数检测
下一篇: 数组中数字出现的次数(利用二进制计算)