Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS
1. 队列(Queue)——FIFO,先入先出的数据结构
队列是一种典型的FIFO数据结构。
FIFO的数据结构中,将首先处理添加到队列中的第一个元素。
入队(Enqueue):队列中,插入(insert)称作入队, 新插入的元素将被添加到队列的末尾。
出队(Dequeue):出队时, 与入队相反,首先被操作的,是第一个元素。
1.1 循环队列
普通队列就不讲了,一旦一个队列满了,即使在队列前面仍有空间也不能插入下一个元素,这在实际上并不常用。
循环队列就是主要设计出来解决上述问题的。
class MyCircularQueue {
private:
vector<int> data;
int head;
int tail;
int size;
public:
/** Initialize your data structure here. Set the size of the queue to be k. */
MyCircularQueue(int k) {
data.resize(k);
head = -1;
tail = -1;
size = k;
}
/** Insert an element into the circular queue. Return true if the operation is successful. */
bool enQueue(int value) {
if (isFull()) {
return false;
}
if (isEmpty()) {
head = 0;
}
tail =<