Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS

  • Home
  • 赛事追踪
  • Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS

Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS

1. 队列(Queue)——FIFO,先入先出的数据结构

1.1 循环队列

1.2 内置队列的常用方法(C++)

1.3 广度优先搜索(BFS)

2.栈(Stack)——LIFO, 后入先出的数据结构

2.1 栈的用法(C++)

2.2 深度优先搜索(DFS)

1. 队列(Queue)——FIFO,先入先出的数据结构

队列是一种典型的FIFO数据结构。

FIFO的数据结构中,将首先处理添加到队列中的第一个元素。

入队(Enqueue):队列中,插入(insert)称作入队, 新插入的元素将被添加到队列的末尾。

出队(Dequeue):出队时, 与入队相反,首先被操作的,是第一个元素。

1.1 循环队列

普通队列就不讲了,一旦一个队列满了,即使在队列前面仍有空间也不能插入下一个元素,这在实际上并不常用。 循环队列就是主要设计出来解决上述问题的。

class MyCircularQueue {

private:

vector 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 =<