큐는 먼저 들어온 데이터가 먼저 출력된다. 이러한 구조를 선입선출(FIFO - First In First Out)이라고 한다.
이러한 큐 자료구조는 보통 우리의 생활에서는 매우 일상적인 자료구조이다. 큐 자료구조의 형태를 가장 흔히 볼 수 있는 게 “줄서기”가 될 것이다. 은행 창구에서 줄을 서거나, 버스를 기다리기 위해서 줄을 설 경우 가장 먼저 줄을 선 사람이 가장 먼저 은행 업무를 처리하거나, 버스를 타게 된다.(새치기 하는 경우는 생각하지 말자)
그림과 같은 큐 자료구조를 설계하고, 처리조건에 맞는 출력을 하시오.
≪처리조건≫
1. 주어지는 명령은 다음의 3가지이다.
2. "i a"는 a라는 수를 큐에 넣는다. 이때, a는 10,000 이하의 자연수이다.
3. "o"는 큐에서 데이터를 빼고, 그 데이터를 출력한다. 만약 큐가 비어있으면, "empty"를 출력한다.
4. "c"는 큐에 있는 데이터의 수를 출력한다.
7 i 7 i 5 c o o o c | 2 7 5 empty 0 |
Code
#include <iostream>
#include <string>
using namespace std;
#pragma warning(disable:4996)
class myqueue{
public :
void insert(int num);
void out();
void count();
int bottom=0;
int top=0;
int set[100];
};
void myqueue::insert(int num){
set[bottom] = num;
bottom++;
}
void myqueue::out(){
if (top < bottom){
cout << set[top] << endl;
top++;
}
else{
cout << "empty" << endl;
}
}
void myqueue::count(){
cout << bottom - top << endl;
}
int main(){
int loop;
string s;
int number;
cin >> loop;
myqueue q;
while (loop!=0)
{
cin >> s;
if (s == "i"){
//삽입
cin >> number;
q.insert(number);
}
else if (s == "o"){
//데이터 빼고 출력
q.out();
}
else if (s=="c"){
//큐의 데이터 출력
q.count();
}
loop--;
}
}
'Algorithm' 카테고리의 다른 글
알고리즘 이항계수 풀기 (0) | 2020.02.03 |
---|---|
2020 카카오 코딩 테스트 (0) | 2020.02.03 |
백준/2502/떡먹는호랑이 (0) | 2019.02.06 |
정올/소시지공장 (0) | 2019.02.06 |
정올/회의실배정 (0) | 2019.02.06 |