• 循环队列(0965)


    描述

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

    input

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

    output

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

    样例输入

    4
    7
    in 1
    in 2
    in 5
    in 6
    out
    out
    in 8


    样例输出

    5 8

    这道题如题所示,建立一个循环队列就做了

    代码如下

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4  
     5 int n;
     6 typedef struct queue{
     7     int data[50];
     8     int head,tail;
     9 }queue,*Queue;
    10  
    11 void init(Queue queue){
    12     queue->head=queue->tail=0;
    13 }
    14 bool isEmpty(Queue queue){
    15     return queue->head==queue->tail;
    16 }
    17 bool isFull(Queue queue){
    18     return (queue->tail+1)%n==queue->head;
    19 }
    20 void in(Queue queue){
    21     int num;cin>>num;
    22     if(isFull(queue))return;
    23     queue->data[queue->tail++]=num;
    24     queue->tail=queue->tail%n;
    25 }
    26 int out(Queue queue,int &e){
    27     if(queue->head==queue->tail)return 0;  
    28     e=queue->data[queue->head];
    29     queue->head=(queue->head+1)%n;  
    30     return 1;  
    31 }  
    32  
    33 int main(){
    34     int t;
    35     queue queue;
    36     init(&queue);
    37     cin>>n>>t;
    38     string str;
    39     int num;
    40     int e=1;
    41     for(int i=0;i<t;i++){
    42         cin>>str;
    43         if(str=="in"){
    44             in(&queue);
    45         }
    46         else if(str=="out")num=out(&queue,e);
    47     }
    48     while(out(&queue,e)){
    49         cout<<e<<" ";
    50     }
    51     return 0;
    52 }
    53 
    54  
  • 相关阅读:
    数据仓库基础(十四)缓慢变化维
    数据仓库基础(十三)Informatica workflow
    数据仓库基础(十二)Informatica组件(2)
    数据仓库基础(十一)Informatica小技巧(2)
    数据仓库基础(十)组件1
    数据仓库基础(九)Informatica小技巧(1)
    数据仓库基础(八)Informatica 小例子
    数据仓库基础(七)Informatica PowerCenter介绍
    数据仓库基础(六)数据的ETL
    数据仓库基础(五)数据仓库系统应用实例
  • 原文地址:https://www.cnblogs.com/swust-wangyf/p/6725951.html
Copyright © 2020-2023  润新知