前言
昨天开始学习的队列,但是昨晚时间太晚没有来得及写博客。今天连上今天的一起补上
队列
定义:与栈相反,队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的一端叫做队尾,允许删除的一端叫做队头。假设队列为
q=(a1,a2,⋅⋅⋅,an)
,那么
a1
就是队头元素,
an
则是队尾元素。队列中的元素是按照
a1,a2,⋅⋅⋅,an
的顺序进入的,退出队列也只能按照这个次序依次退出,也就是说,只有在
a1,a2,⋅⋅⋅,an−1
都离开队列之后,
an
才能退出队列。
队列的实现:
function QNode(element){
this.element = element;
this.next = null;
};
function Queue(){
this.head = new QNode("head");
this.front = this.head;
this.rear = this.head;
};
Queue.prototype = {
inQueue:function(newElement){
var newQNode = new QNode(newElement);
this.front = this.head;
this.rear.next = newQNode;
this.rear = newQNode;
},
outQueue:function(){
if(this.front === this.rear){console.log("this is a empty queue");return false;}
var oldItem = this.front.next;
this.front = this.head;
this.front.next = oldItem.next;
if(this.rear === oldItem){this.rear = this.front}
},
}
队列的方法只写了插入和删除操作,其他操作没有写。
后记
今天的内容不算多,因为在看后面的离散事件模拟,有个地方没有看懂,明天看懂了写完继续。