首页 > 代码库 > javascript中的队列结构
javascript中的队列结构
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] + " " } 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中的队列结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。