[자료구조] Queue (큐)

2021. 3. 8. 10:03·스터디/Algorithm
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

'스터디 > Algorithm' 카테고리의 다른 글

[Algorithm] Prefix Sum 구간합  (0) 2021.05.11
[자료구조] Stack (스택)  (0) 2021.03.08
[Algorithm] Binary Search (이분 탐색) 개념  (0) 2021.03.02
[Algorithm] Binary Search (이분 탐색)  (0) 2021.02.26
자료형 크기 및 범위 정리  (0) 2021.02.26
'스터디/Algorithm' 카테고리의 다른 글
  • [Algorithm] Prefix Sum 구간합
  • [자료구조] Stack (스택)
  • [Algorithm] Binary Search (이분 탐색) 개념
  • [Algorithm] Binary Search (이분 탐색)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    db
    코딩테스트
    자바
    Spring
    java
    알고리즘
    코딩
    쿠버네티스
    네트워크
    리트코드
    이분탐색
    카카오코테
    LeetCode
    pythoncodingtest
    코테공부
    CodingTest
    C++
    스프링부트
    프로그래머스
    스프링
    코테
    MySQL
    kafka
    자료구조
    금융용어
    codility
    Kotlin
    springboot
    코딜리티
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[자료구조] Queue (큐)
상단으로

티스토리툴바