Typescript实现队列
队列的概念
- 队列是一个先进先出(FIFO)的数据结构。
- 由于TS中没有队列,所以我们使用数组来模拟一个队列并实现队列的所有功能。
队列的操作
- enqueue(element):向队列尾部添加一个新的项
- dequeue():移除队列的第一项,并且返回被移除的元素
- peek():返回队列中的第一个元素
- isEmpty():判断队列是否为空
- size():返回队列的元素个数
- print_queue():打印队列中的元素
代码实现
入队
enqueue(item:T){
this.items.push(item);
}
移除队首元素
//删除第一个元素并且返回被删除的元素
dequeue(){
return this.items.shift();
}
返回队首元素
//返回队列中的第一个元素
peek(){
return this.items[0];
}
判断队列是否为空
//判断队列是否为空
isEmpty(){
return this.items.length ? false : true;
}
获取队列的大小
//返回队列大小
size(){
return this.items.length;
}
打印队列中的元素
//打印队列中的元素
print_queue(){
for(let i =0;i<this.items.length;i++){
console.log(this.items[i]);
}
}
代码测试
测试结果如下:
完整代码
//用数组实现队列
class queue<T>{
private items:T[]
constructor(){
this.items = [];
}
enqueue(item:T){
this.items.push(item);
}
//删除第一个元素并且返回被删除的元素
dequeue(){
return this.items.shift();
}
//返回队列中的第一个元素
peek(){
return this.items[0];
}
//判断队列是否为空
isEmpty(){
return this.items.length ? false : true;
}
//返回队列大小
size(){
return this.items.length;
}
//打印队列中的元素
print_queue(){
for(let i =0;i<this.items.length;i++){
console.log(this.items[i]);
}
}
}
let queue_example= new queue();
queue_example.enqueue(10)
queue_example.enqueue('熊大')
if(queue_example.isEmpty()){console.log('队列为空')}
else{console.log('队列非空')}
queue_example.print_queue();
console.log('队首元素是:'+queue_example.peek());
queue_example.dequeue()
console.log(queue_example.peek());