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;
}
目录
相关文章
|
7月前
链式队列的实现
链式队列的实现
52 0
|
7月前
|
存储
循环队列的实现(附完整代码)
循环队列的实现(附完整代码)
77 1
|
机器学习/深度学习
循环队列的实现
循环队列的实现
|
7月前
循环队列详解
循环队列详解
|
7月前
|
机器学习/深度学习 存储
leetcode:循环队列
leetcode:循环队列
|
存储
Leetcode循环队列(数组实现及链表实现)
Leetcode循环队列(数组实现及链表实现)
86 0
|
存储
循环队列来了解一下!!
循环队列来了解一下!!
55 0
顺序循环队列与链队列
今天学习了队列,一种是顺序循环队列,一种是链队列,我个人认为链队列相对好用一点,毕竟链队列不用考虑“假溢出”的问题,下面是我整理的关于队列的一些基本操作
154 0
顺序循环队列与链队列
|
存储 Java
Java数组实现循环队列
Java数组实现循环队列