본문 바로가기
스터디/Algorithm

[자료구조] Queue (큐)

by zoodi 2021. 3. 8.
728x90

📌큐 개념

먼저 들어온 자료가 먼자 나가는 FIFO (First in First Out), 선입선출 구조의 자료구조이다.

 

📌큐 주요 함수

  • front (): 맨 앞의 요소 출력
  • rear() : 맨 뒤의 요소 출력
  • enqueue() : 큐 뒤에 요소 추가하는 함수
  • dequeue() : 큐 맨 앞 요소를 빼는 함수
  • isFull() : 큐가 가득 찼는지 확인하는 함수
  • isEmpty() : 큐가 비었는지 확인하는 함수

📌큐 사용 사례

데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에 이용한다.

 

  • 우선순위가 같은 작업 예약 (프린터의 인쇄 대기열)
  • 은행 업무
  • 콜센터 고객 대기시간
  • 프로세스 관리
  • 너비 우선 탐색(BFS, Breadth-First Search) 구현
  • 캐시(Cache) 구현

 

 

📌구현 코드

#include <iostream>
using namespace std;

const int MAX = 1000;

class Queue {
private:
    int data[MAX];
    int index_front;
    int index_rear;
public:
    Queue();
    bool empty();
    void push(int x);
    void pop();
    int front();
    int rear();
    int size();
};

Queue::Queue() {
    index_front = 0;
    index_rear = 0;
}

bool Queue::empty() {
    return index_front == index_rear;
}

void Queue::push(int x) {
    index_rear = (index_rear+1) % MAX;
    data[index_rear] = x;
}

void Queue::pop() {
    index_front = (index_front+1) % MAX;
}

int Queue::front() {
    return data[(index_front+1)%MAX];
}

int Queue::rear() {
    return data[index_rear];
}

int Queue::size() {
    return (index_rear-index_front+MAX)%MAX;
}


출처: https://rebas.kr/795 [PROJECT REBAS]

참조 : https://devuna.tistory.com/22

 

728x90

댓글