• 循环队列(进队,出队)


    描述

    根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素空间。例如,给定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"
    #include"string"
    using namespace std;
    typedef int element;
    class Queue{
    private:
        element *arr;
        int front;
        int maxsize;
        int tail;
    public:
        Queue(int size){
            maxsize = size;
            arr = new  element[size];
            front = 0;
            tail = 0;
        }
        bool empty(){
            return tail == front;
        }
        bool full(){
            return (tail + 1) % maxsize == front;
        }
        bool push(element data){
            if(full()){
                cout<<"out"<<endl;
                return false;
            }
            arr[tail] = data;
            tail = (tail + 1) % maxsize;
            return true;
        }
        int length(){
            return (tail - front + maxsize) % maxsize;
        }
        element pop(){
            if(empty()){
                return false;
            }
            int temp = front;
            front = (front + 1) % maxsize;
            return arr[temp];
            
        }
        element getFront(){
            if(empty()){
                return arr[-1];
            }
            return arr[front];
        }
    };
    int main(){
        element data;
        int n;
        string s;
        cin>>n;
        Queue myq(n);
        cin>>n;
        while(n--){
            cin>>s;
            if(s=="in"){
                cin>>data;
                myq.push(data);
            }
            else{
                myq.pop();
            }
        }
        while(!myq.empty()){
            cout<<myq.pop()<<ends;
        }
        cout<<endl;
        return 0;
    }
    /*
    4
    7
    in 1
    in 2
    in 5
    in 6
    out
    out
    in 8
    
    */
  • 相关阅读:
    欢迎参加MVP主讲的Windows 10开发线上课程
    SharePoint 2013 重复的管理账户错误:已添加项。字典中的关键字 所添加的关键字
    SharePoint 2013 开发——SharePoint Designer 2013工作流
    SharePoint 2013 开发——构建工作流开发环境
    SharePoint 2013 开发——工作流架构
    SharePoint 2013 开发——APP安全模型
    SharePoint 2013 开发——SharePoint APP介绍
    SharePoint 2013 开发——概述
    win32
    hdu2100 26进制加法
  • 原文地址:https://www.cnblogs.com/oleolema/p/9033071.html
Copyright © 2020-2023  润新知