码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中的队列结构

时间:2016-09-03 19:42:37      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

1.概念

  队列和栈结构不同,栈是一种后进先出的结构,而队列是一种先进先出的结构。队列也是一种表结构,不同的是队列只能在队尾插入元素,在队首删除元素,可以将队列想象成一个在超时等待排队付钱的队伍,或者在银行拿的号子,排在前面的人拥有优先服务权。队列是一种FIFO(First In First Out)。队列用在很多地方,比如提交操作系统执行一系列的进程,打印任务池等,一些仿真系统使用队列来模拟银行或者超时里排队的顾客。

  队列主要有两种操作,祥队列中插入新元素和删除队列中的元素。插入操作也叫入队,删除操作也叫出队。入队操作在队尾插入新元素,出队操作删除队头的元素。队列的应外一项重要操作是读取队头的元素,这个操作叫做peek(),这个操作返回对头元素,并不删除它。除了读取对头元素我们还想知道队列中存储了多少元素,可以使用length属性满足该要求,想要清空队列中的所有元素,可以使用clear()方法来实现。

  使用数组来实现队列看起来顺理成章,javascript中的数组有其他编程语言中没有的有点,数组使用push()方法可以在数组的末尾加入元素,使用shift()方法可以删除数组的第一个元素。push()方法将它的参数插入数组中第一个开放的位置,该位置总在数组的末尾,即使是一个空数组也是。就是说push()插入的元素总是数组的最有一个元素。看下面的例子:  

names = [];
name.push("Cynthia");
names.push("Jennifer");

现在数组中的第一个元素是Cynthia,第二个元素是Jennifer。

  使用shift()方法删除数组的第一个元素。

  下面看看队列的实现方法:

/*--------------Queue类的定义和测试代码----------------*/
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(){
    return 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] + "&nbsp;"
    }
    return retStr;
}
//判断数组是否为空
function empty(){
    if(this.dataStore.length == 0){
        return true;
    }else{
        return false;
    }    
}
//返回数组中元素的个数
function count(){
    return this.dataStore.length;
}

var q = new Queue();
q.enqueue("Meredith");
q.enqueue("Cynthia");
q.enqueue("Jennifer");
document.write(q.toString());
document.write(‘<br>‘);
document.write("Front of queue is:" + q.front());
document.write(‘<br>‘);
document.write("Back of queue is:" + q.back());

最后的输出结果为:

技术分享

 

javascript中的队列结构

标签:

原文地址:http://www.cnblogs.com/tylerdonet/p/5837730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!