数据结构与算法JavaScript描述——队列

注:澄清一个bug:
/**
*    删除队首的元素:
*/
function dequeue(){
    return this.dataStore.shift();
}

应该有return;

 
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。
队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。
可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。
 
队列是一种先进先出的数据结构。
队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货
店里排队的顾客。
 
1.对队列的操作                                              
队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。
插入操作也叫做入队,删除操作也叫做出队。
入队操作在队尾插入新元素,出队操作删除队头的元素。
队列的另外一项重要操作是读取队头的元素。这个操作叫做peek()。
该操作返回队头元素,但不把它从队列中删除。
除了读取队头元素,我们还想知道队列中存储了多少元素,可以使用length 属性满足该需求;
要想清空队列中的所有元素,可以使用clear() 方法来实现。
 
2.用数组实现的队列                                              
JavaScript 中的数组具有其他编程语言中没有的优点,数组的push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素。
 
代码:
<script type="text/javascript">
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;
    }
}

//测试代码
var q = new Queue();
q.enqueue("Meredith");    
q.enqueue("Cynthia");
q.enqueue("Jennifer");
console.log(q.toString());
q.dequeue();
console.log(q.toString());
console.log("Front of queue: " + q.front());
console.log("Back of queue: " + q.back());



</script>
View Code

打印:

 
posted on 2017-07-20 23:48  有点懒惰的大青年  阅读(216)  评论(0编辑  收藏  举报