SWUSTOJ 965: 循环队列

简介: SWUSTOJ 965: 循环队列

题目描述


根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素空间。例如,给定5个元素空间构造循环队列,则只能存放4个元素。试根据入队及出队操作判断队列最后的元素存放情况,并输出最后队列中的元素值,即完成给定入队及出列操作后一次性全部出队的元素值。要求采用顺序队列完成,少用一个存储空间的方法区分队列的空和满。


输入


输入的第一行为一个自然数n,表示要求构造的顺序循环队列空间数。 第二行为操作次k,接下来k行为出队入队操作,每行各代表一次操作。入队用in表示,出队用out表示,如果是入队,则in隔一空格后为一整数,表示入队元素值。


输出


输出完成所有入队出队操作后,一次性出队元素。用一个空格隔开。可以假定队在完成所有操作后不为空。


样例输入


4

7

in 1

in 2

in 5

in 6

out

out

in 8


样例输出

5 8


#include <iostream>
using namespace std;
const int N = 10010;
int hh = 0, tt =0;
int size, n;
int que[N];
bool isEmpty()
{
  return hh == tt;
}
bool isFull()
{
  return (tt + 1)%size == hh;
}
void enQueue(int val)
{
  if(isFull()) return;
  que[tt++] = val;
  if(tt == size) tt = 0;
}
void deQueue()
{
  if(isEmpty()) return;
  hh++;
  if(hh == size) hh = 0;  
} 
int main()
{
  cin>>size>>n;
  while(n--)
  {
    string op;
    cin>>op;
    if(op == "in")
    {
      int num;
      cin>>num;
      enQueue(num); 
    }
    else deQueue(); 
  }
  while(!isEmpty())
  {
    cout<<que[hh]<<' ';
    deQueue();  
  } 
  return 0;
}
目录
相关文章
|
6月前
链式队列的实现
链式队列的实现
44 0
|
6月前
|
C++
数据结构(顺序队列 循环队列
数据结构(顺序队列 循环队列
26 0
|
6月前
|
存储
循环队列的实现(附完整代码)
循环队列的实现(附完整代码)
66 1
|
机器学习/深度学习
循环队列的实现
循环队列的实现
|
6月前
循环队列详解
循环队列详解
|
6月前
|
机器学习/深度学习 存储
leetcode:循环队列
leetcode:循环队列
|
6月前
|
存储 缓存 算法
队列的学习(二) 循环队列
队列的学习(二) 循环队列 循环队列是一种基于数组实现的队列,相比于普通队列,它的插入和删除操作更加高效。循环队列可以避免在队列头部删除元素时进行大量的数据搬移操作,实现了队列的“循环利用”。
|
存储
循环队列来了解一下!!
循环队列来了解一下!!
49 0
|
存储 缓存 算法
【数据结构】队列(循环队列和链队列)详细讲解各种操作
【数据结构】队列(循环队列和链队列)详细讲解各种操作
890 0
|
机器学习/深度学习 存储 算法
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列