Hello小伙伴们,好久不见,栈说完了,我们就来说说队列吧~这是个和栈遥相呼应的数据结构呢。还记得栈的特点吗,栈只能在栈顶添加或删除。栈是一种后入先出的结构。而队列呢,则相反,只能队尾插入元素、队首删除元素,主要用于存储顺序的数据,先进先出。
队列的实现
我们根据队列的特点,思考一下我们需要怎样的操作呢?首先要有个数据元素的容器,因此我们需要一个数组;然后我们要满足能够从队尾插入数据,那么我们需要push方法;我们需要能够删除队首的元素,因此我们需要一个shift方法,这里可别记反了(unshift才是插入哦);那么我们既然完成了队列的功能,那就还需要把它显示出来啦,所以还需要一个toString方法咯。最后如果想判断队列是否为空,我们就可以通过数组长度来判断啦。好啦,思路到此为止,下面就让我们看看具体怎么实现咯!
function Queue(){
this.dataStore=[];
this.enqueue=enqueue;
this.dequeue=dequeue;
this.front=front;
this.back=back;
this.toString=toString;
this.empty=empty;
}
function enqueue(element){
this.dataStore.push(element);
}
function dequeue(){
this.dataStore.shift();
}
function front(){
return this.dataStore[0];
}
function back(){
return this.dataStore[this.dataStore.length-1];
}
function toString(){
var retStr="";
for(var i=0; i<this.dataStore.length;++i){
retStr+=this.dataStore[i]+"\n";
}
return retStr;
}
function empty(){
if(this.dataStore.length==0){
return true;
}else{
return false;
}
}
队列的使用
小伙伴们,现在是否能够独立完成一个队列数据结构的构造了呢?下面就让我们看看队列都能放在哪里使用吧~
1)数据排序:对各个位上的数字进行排序,先排序个位、再排十位。这是排序的一种思路。
2)优先队列:如果删除元素的时候需要删的并不是首元素,这时候就需要优先队列了,这里我们就要设置一下优先等级了。
3)在现实生活中,也会用到,比如医院病人的紧急程度、比如排队做什么事情等。