Leetcode刷题指南- 用循环数组来实现队列(955)

文章目录

    • 1)题目
      • 用循环数组来实现队列
        • 要求:
        • 样例
    • 2)思路
    • 3)代码

1)题目

用循环数组来实现队列

要求:

用循环数组来实现队列。你需要支持下列方法:

CircularQueue(n): 初始化一个大小为n的循环数组来存储元素;
boolean isFull(): 如果数组满了就返回 true
boolean isEmpty(): 如果数组为空则返回 true;
void enqueue(element): 往队列中添加一个元素
int dequeue(): 从队列中弹出一个元素

样例

输入:
CircularQueue(5)
isFull()
isEmpty()
enqueue(1)
enqueue(2)
dequeue()
输出:
[“false”,“true”,“1”]

2)思路

注意队列满和空的操作

3)代码

//头文件
#pragma once
#include 
#include 
using namespace std;

class CircularQueue {
public:
	/**
	 * @return:  return true if the array is full
	 */
	//用数组初始化队列

	CircularQueue(int n) : arr(n,0),size(0) {}
	//判断队列是否满
	bool isFull()
	{
		return size == arr.size();
	}

	//判断队列是否空
	bool isEmpty()
	{
		return size == 0;
	}

	//入队一个元素
	void enqueue(int element)
	{
		end = (start + size) % arr.size();
		arr[end] = element;
		size++;
	}
	//出队一个元素,并返回
	int dequeue()
	{
		int result = arr[start];
		start = (start + 1) % arr.size();
		size--;
		return result;
	}
private:
	vector<int> arr;
	int size;
	int start;
	int end;

};

//主函数
#pragma once
#include 
#include 
#include "955.h"


#include 
using namespace std;

class CircularQueue;
CircularQueue function(10);
int main()
{
	bool a = function.isEmpty();
	function.enqueue(2);
	cout << a << endl;
	bool b = function.isEmpty();
	cout << b << endl;


}

你可能感兴趣的:(2021秋招刷题指南)