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

版权声明: https://blog.csdn.net/wlk2064819994/article/details/79980317

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

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);
	}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页