DS隊列--組隊列


題目描述

組隊列是隊列結構中一種常見的隊列結構,在很多地方有着廣泛應用。組隊列是是指隊列內的元素分組聚集在一起。組隊列包含兩種命令:

1、 ENQUEUE,表示當有新的元素進入隊列,首先會檢索是否有同一組的元素已經存在,如果有,則新元素排在同組的最后,如果沒有則插入隊列末尾。

2、 DEQUEUE,表示隊列頭元素出隊

3、 STOP,停止操作

建議使用C++自帶的隊列對象queue,編程更方便

 

 

輸入

第1行輸入一個t(t<=10),表示1個隊列中有多少個組

第2行輸入一個第1組的元素個數和數值

第3行輸入一個第2組的元素個數和數值

以此類推輸入完t組以定義同組元素之后,開始輸入多個操作命令(<200),對空的組隊列進行操作,例如輸入ENQUEUE 100,表示把元素100插入隊列

 

 

 

輸出

DEQUEUE出隊的元素

樣例輸入

2 3 101 102 103 3 201 202 203 ENQUEUE 101 ENQUEUE 201 ENQUEUE 102 ENQUEUE 202 ENQUEUE 103 ENQUEUE 203 DEQUEUE DEQUEUE DEQUEUE STOP

樣例輸出

101 102 103

提示

#include<iostream>
#include<queue>
#include<map>
using namespace std;
int main()
{
    int T;
    cin>>T;
    int value;
    map<int,int>mem;///map提供key--value映射,此處每個key(101、102、103)的value都是1,(201、202、203)的value都是2
    int flag=1;
    int number;
    queue<int>que[T];
    queue<int>output;
    for(int i=0;i<T;i++)
    {
        cin>>number;
        while(number--)
        {
            cin>>value;
            mem[value]=i;
        }
    }
    string oper;
    while(cin>>oper&&oper!="STOP")
    {
        if(oper=="ENQUEUE")
        {
            cin>>value;
            for(int i=0;i<T;i++)
            {
                if(que[i].empty()||mem[que[i].front()]==mem[value])///如果隊列空或該key所對應的value值與某個隊列隊首相同則入該隊
                {
                    que[i].push(value);
                    break;
                }
            }
        }
        else if(oper=="DEQUEUE")
        {
            for(int i=0;i<T;i++)
            {
                if(!que[i].empty())
                {
                    output.push(que[i].front());
                    que[i].pop();
                    break;
                }
            }
        }
    }///存起來用output隊列輸出
    while(!output.empty())
    {
        if(flag==1)
        {
            flag=0;
            cout<<output.front();
        }
        else
            cout<<" "<<output.front();
        output.pop();
    }
    cout<<endl;
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM