【队列的实现——c++】教程文章相关的互联网学习教程文章

【单调队列例题】【移动窗口问题】【c++】window【代码】

#include<bits/stdc++.h> using namespace std; const int N=1000005; int a[N]; int ans_min[N]; int ans_max[N]; int main(){int n,m,c;scanf("%d%d%d",&n,&m,&c);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}deque<int> q1,q2;for(int i=1;i<=n;i++){while(q1.size()>0&&a[q1.back()]>=a[i])q1.pop_back();q1.push_back(i);if(q1.front()==i-m)q1.pop_front();while(q2.size()>0&&a[q2.back()]<=a[i])q2.pop_back();q2.push_back...

c++优先队列【代码】

普通队列:先进先出,无优先级。优先队列,加入了优先级后,拥有最高优先级的元素先出来,本质是堆实现的。操作还是之前那一套操作:top //访问队头元素 empty //队列是否为空 size //返回队列内元素个数 push //插入元素到队尾 (并排序) emplace //原地构造一个元素并插入队列 pop //弹出队头元素 swap //交换内容    升序队列:结尾的> >之间记得加空格!!priority_queue <int,vector<int>,greater<int> > q;      ...

基本数据结构——队列(动态数组C++)【代码】

基本数据结构——队列(动态数组C++) 特点:先进先出、后进后出 队首front(为空,加一才是第一个数据)、队尾rear(指向数组的最后一个数据) 基本操作:Push 给队尾添加数据 Pop 从队首删除数据 Front 查看队首的数据 Rear 查看队尾的数据 IsEmpty 判断是否为空//建立头文件queue.h#ifndef _QUEUE_H #define _QUEUE_H #include<math.h> using namespace std;template<class T> class Queue { public:Queue(int queueCapacity = ...

C++_栈和队列的使用【代码】

0x01.说明 在C++中,栈和队列已经封装好了,可以直接创建对象使用。 使用时,需要加上 #include<stack> 和 #include<queue>的头文件。 0x02.使用 1.创建对象stack<Type> s; queue<Type> q; 2.基本使用s.empty();//如果栈为空,返回ture,否则返回false s.size();//返回栈中元素个数 s.pop;//删除栈顶元素,但不返回其值 s.top();//返回栈顶元素,但不删除这个元素 s.push();//往栈顶压入新的元素q.empty();//如果队列为空,返回tru...

顺序队列c++【代码】

通过数组建立队列 1 #include <iostream>2 3 using namespace std;4 5 template<class T>6 class MyQueue7 {8 public:9 MyQueue(int queuecapacity=10);10 ~MyQueue();11 12 bool IsEmpty() const;13 T& Front() const;14 T& Rear() const;15 void Push(const T& item);16 void Pop();17 private:18 T *Queue;19 int myfront;20 int myrear;21 int capacity;22 };23 template<class ...

C++泛化队列

队列 队列也是一种特殊的先进先出(FIFO)线性数据结构,数据可以从一端进入,从另一端出去。 队列可以利用数组和链表进行实现。 抽象方法(ADTqueue.h) /************************************************************************* > File Name : ADTqueue.h > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年03月05日 10时3...

c++ 队列

1.普通队列 头文件 : include<queue> 构造队列Q : queue <队列类型> Q 部分操作: Q.push(x) 入队 Q.pop() 出队 Q.top() 读取队首元素 Q.back() 读取队尾元素 Q.empty() 判断队列是否为空 为空返回true Q.size() 查询队列长度 清空队列 : 一个一个pop() 2. 优先队列(好像就是堆) 特点:在队列的基础上把队中的元素按照(一定的方式)排序了 头文件: include<queue> 构造优先队列Q : priority_queue <队列中元素类型,容器...

滑动窗口(单调队列) C++版 Python版本【代码】

AcWing 154 滑动窗口 https://www.acwing.com/problem/content/156/ 给定一个大小为n≤106n≤106的数组。 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。 您只能在窗口中看到k个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为[1 3 -1 -3 5 3 6 7],k为3。窗口位置最小值最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5 3 ...

C++ 数组队列【代码】

Queue.h #ifndef QUEUE_H #define QUEUE_H#include <iostream> #include <cstring>#define Queue_MAXSize 10using namespace std;class Queue { private:int data[Queue_MAXSize];int front;int rear; public:Queue();~Queue();bool Queue_Init(void);int Queue_Length(void);int Queue_Front(void);int Queue_Rear(void);bool Queue_Insert(int data);int Queue_Output(void);bool Queue_Delete(int data);bool Queue_Visit(void)...

安全线程队列 — C++【代码】

一、废话少说,上代码,安全队列 #pragma once #include <queue> #include <memory> #include <mutex> #include <condition_variable>template <typename T> class SafeQueue { private:mutable std::mutex mMutex;std::queue<T> mQueue;std::condition_variable mCond;public:SafeQueue() {}SafeQueue(SafeQueue const &other){std::lock_guard<std::mutex> lk(other.mMutex);mQueue = other.mQueue;}void push(T new_value){std:...

C++实现一个简单的双栈队列【代码】【图】

直接上代码, 解释有空补上, 随手写的, 有问题欢迎指出 1 #include <stack>2 3 template <typename T>4 class CStkQueue5 {6 public:7 T queuePop();8 void queuePush(T value);9 size_t queueSize(); 10 11 private: 12 std::stack<T> std_stack_push; 13 std::stack<T> std_stack_pop; 14 }; 15 16 17 template <typename T> 18 T CStkQueue<T>::queuePop() 19 { 20 if (!std_stack_pop.empty()) 21 { 22 T ...

C++ STL 优先队列(priority_queue)容器的简单使用【代码】【图】

C++ STL 优先队列(priority_queue)容器的简单使用 如果需要用到堆的地方,可以使用C++ STL中的priority_queue实现,比较方便 /* priority_queue <type, containor, function> param type : 每个元素的数据类型 param containor : 底层用什么结构存储数据,默认是vector param function : 比较大小的函数 return : 优先队列对象 */ priority_queue <int, vector<int>, greater<int> > q;/* param x : 向堆中插入元素 retu...

C++deque双向队列

1、简介deque 也是顺序容器的一种,同时也是一个可变长数组。要使用 deque,需要包含头文件 deque。所有适用于 vector 的操作都适用于 deque。  在 deque 中,随机存取任何元素都能在常数时间内完成(但慢于vector)。它相比于 vector 的优点是,vector 在头部删除或添加元素的速度很慢,在尾部添加元素的性能较好,而 deque 在头尾增删元素都具有较好的性能(大多数情况下都能在常数时间内完成)。它有两种 vector 没有的成员函...

c++中基于两个栈实现队列的操作【图】

思路: 由于队列的先进先出的特性,使用栈的先进后出的特性。可以使用两个栈,其中一个栈实现入队,另一个栈实现出队的操作。定义一个数据节点的类:class data_node{ public:data_node() :data(0), next(NULL){}//default constructer functiondata_node(int value) :data(value), next(NULL){}//include arg constructer functionint data;data_node *next;//pointer that point to next node }; 定义一个栈类:class my_stack{...

c++ 队列算法【代码】

include using namespace std;#define Maxsize 5typedef int DataType;typedef struct Queue {DataType data[Maxsize];int front; //循环 队列头指针 int rear; //循环 队列尾指针}QueueList;void intit(QueueList *list) {list->front=list->rear = 0;}// 队列是否已满bool IsFull(QueueList *list) {if (!list) return false;if ((list->rear + 1) % Maxsize == list->front) {return false;}return true;}// 队列是否为空bool...