数据结构之JavaScript实现队列(queue)

标签: JavaScript队列 queue 数据结构
7人阅读 评论(0) 收藏 举报
分类:

    和栈一样,队列其实也是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素,也就是说,队列是先进先出的数据结构;而栈是先进后出的数据结构。队列的主要操作就是入队和出队操作,也就是队尾插入元素和队首删除元素。队列还有一个比较重要的操作就是读取队首的元素。值得注意一点的是:优先队列。优先队列的普通队列的不同是出队的规则不同:普通队列先进先出,就想排队一样;而优先队列不一定先进先出,而是按照每个元素的优先级来出队。

JavaScript实现队列代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>数据结构之JavaScript实现队列</title>
</head>
<body>
	<script>
		function Queue(){
			this.dataStore = [];
			this.enqueue = enqueue;//入队
			this.dequeue = dequeue;//出队
			this.front = front;    //读取队首元素
			this.back = back;      //读取队尾元素
			this.empty = empty;
			this.length = length;
			this.clear = clear;
			this.toString = toString;
		}

		//入队
		function enqueue(element){
		    this.dataStore.push(element);//在数组末尾添加元素
		}

		//出队
		function dequeue(){
			return this.dataStore.shift();//shift()删除数组第一个元素并返回
		}

		//读取队首元素
		function front(){
			return this.dataStore[0];
		}

		//读取队尾元素
		function back(){
			return this.dataStore[this.dataStore.length-1];
		}

		//判空
		function empty(){
			if(this.dataStore.length == 0){
				return true;
			}else{
				return false;
			}
		}

		//清空
		function clear(){
			this.dataStore = [];
		}

		//返回队列长度
		function length(){
			return this.dataStore.length;
		}

		//toString
		function toString(){
			return this.dataStore;
		}

		var que = new Queue();
		que.enqueue(1);
		que.enqueue(2);
	</script>
</body>
</html>
下面是优先队列的出队操作,其他操作都相同。
	//优先队列:其实只是出队时有点不同,优先队列不一定是先进先出,而是按照对内元素的优先级出队。
	/*假设现在队列内的元素是一个对象,有一个code属性表示其优先级,数字越小优先级有越高*/
	function previligedequeue(){
	    var entry = 0;
	    for(var i=0;i<this.dataStore.length;i++){
	    	if(this.dataStore[i].code<this.dataStore[entry].code){
	    		entry = i;
	    	}
	    }
	    return this.dataStore.splice(entry,1);
	}

查看评论

JavaScript数据结构之队列

队列和栈非常的类似,但是使用了不同的原则,栈是先进后出,而队列是先进先出,即遵循的是FIFO(First In First Out,先来先服务)。队列也可以这样形象地想象成是将数组装到一根管子里,一边...
  • L_in12
  • L_in12
  • 2016-06-27 11:10:16
  • 776

java数据结构与算法之(Queue)队列设计与实现

队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列的简单应用 优先队列的设置与实现...
  • javazejian
  • javazejian
  • 2016-12-04 10:05:06
  • 13472

数据结构-队列(queue)

队列(queue)是一种采用先进先出(FIFO)策略的抽象数据结构,它的想法来自于生活中排队的策略。顾客在付款结账的时候,按照到来的先后顺序排队结账,先来的顾客先结账,后来的顾客后结账。队列实现同栈的...
  • juanqinyang
  • juanqinyang
  • 2016-05-09 16:51:40
  • 8504

javascript 队列(queue)算法与说明

队列的介绍队列是一种遵从先进先出(FIFO)先来先服务的有序的项,就是喝茶拿号模式(最前的号,最先进去)。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。队列算法实例1.我有...
  • rth362147773
  • rth362147773
  • 2017-09-11 00:07:27
  • 402

C++数据结构 之 队列_Queue

C++数据结构 之 队列_Queue源代码只包含头文件注:需要C++11的支持。
  • liu798675179
  • liu798675179
  • 2016-08-10 11:40:50
  • 1623

java数据结构队列(Queue)之个人理解

1. 队列定义   队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear...
  • u010268227
  • u010268227
  • 2016-11-09 21:20:25
  • 1252

队列(queue)原理

像栈一样,队列(queue)也是一种线性表,它的特性是先进先出,插入在一端,删除在另一端。就像排队一样,刚来的人入队(push)要排在队尾(rear),每次出队(pop)的都是队首(front)的人。...
  • ZhongGuoZhiChuang
  • ZhongGuoZhiChuang
  • 2016-11-17 10:19:57
  • 4693

数据结构(Java语言)——Queue简单实现

和栈类似,队列queue也是表。然而,使用队列时插入在一端进行而删除在另一端进行。 队列的基本操作是enqueue(入队)和dequeue(出队),入队是在队尾rear(表的末端)插入一个元素,出队是...
  • zhang_zp2014
  • zhang_zp2014
  • 2015-08-13 19:48:40
  • 1137

数据结构之队列(C语言实现)

数据结构之队列(C语言实现) 在这里将介绍三种队列:数组实现的循环队列、链表队列和具有实用价值的优先级队列。本次只介绍前两种,优先级队列在下一次博客中再单独说明。...
  • kang___xi
  • kang___xi
  • 2016-12-01 19:24:23
  • 702

Python 内置数据结构 —— queue(队列)、deque(双端队列)

注意,Python 内置的队列这一数据结构,在不同的 Python 版本中,形式不同: Python 2.x:8.10. Queue — A synchronized queue class Pyth...
  • lanchunhui
  • lanchunhui
  • 2017-05-16 18:56:49
  • 745
    个人资料
    持之以恒
    等级:
    访问量: 420
    积分: 236
    排名: 31万+
    文章存档
    最新评论