队列是遵循 FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序集合。
队列在尾部添加新元素,并从顶部移除元素。
最新添加的元素必须排在队列的末尾。
方法 | 描述 |
---|---|
enqueue(element(s)) | 向队列尾部添加一个(或多个)新的元素。 |
dequeue() | 移除队列的第一(即排在队列最前面的)元素并返回。 |
peek() | 返回队列中第一个元素。 |
双端队列(deque,全名 double-ended queue)是一种具有队列和栈性质的抽象数据类型。
双端队列中的元素可以从两端弹出,
插入和删除操作限定在队列的两边进行。
方法 | 描述 |
---|---|
addFront(element(s)) | 向队列头部插入添加一个(或多个)新的元素。 |
addBack(element(s)) | 向队列尾部插入添加一个(或多个)新的元素。 |
peekFront() | 返回队列中第一个元素。 |
peekBack() | 返回队列中最后一个元素。 |
removeFront() | 移除队列的第一(即排在队列最前面的)元素并返回。 |
removeBack() | 移除队列的最后一个(即排在队列最前面的)元素并返回。 |
优先队列(Priority Queue):带有权重的队列
优先队列往往用堆来实现。(JS 里可以是数组)
方法 | 描述 |
---|---|
enqueue(element(s), priority) | 向队尾添加一个元素以及权重 |
dequeue() | 删除队首的元素 |
front() | 读取队首 |
back() | 读取队尾 |
循环队列(Circular Queue):循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。
方法 | 描述 |
---|---|
enqueue(element(s)) | 向队列尾部添加一个(或多个)新的元素。 |
dequeue() | 移除队列的第一(即排在队列最前面的)元素并返回。 |
peek() | 返回队列中第一个元素。 |