큐 (Queue)

ORCASUIT·2023년 10월 23일

큐(Queue)

큐는 컴퓨터 과학에서의 중요한 자료 구조로, 선입선출(FIFO: First-In-First-Out) 원칙을 따릅니다.

Keywords: #큐 #자료구조 #선입선출 #FIFO


큐의 정의

  • 인큐(enqueue): 큐에 데이터를 추가하는 작업
  • 디큐(dequeue): 큐에서 데이터를 제거하는 작업
  • 프론트(Front): 큐의 앞부분 데이터 확인 (제거 X)
  • 리어(Rear): 큐의 끝부분 데이터 확인

큐의 특징

  1. 선입선출 (FIFO)
  2. Enqueue: 데이터 추가
  3. Dequeue: 데이터 제거 및 반환
  4. Front: 앞부분 데이터 확인
  5. Rear: 끝부분 데이터 확인

큐의 사용 사례

  • 순서대로 처리: 데이터나 작업 순서대로 처리
  • 대기열: 프린터 대기열, 태스크 스케줄링 등
  • 너비 우선 탐색(BFS): 그래프 탐색
  • 데이터 버퍼: 순서 유지하며 일시적 데이터 저장

큐의 구현

큐는 배열이나 연결 리스트로 구현될 수 있습니다.

  • 배열: 고정 크기 큐
  • 연결 리스트: 동적 크기 큐

큐 초기화

파이썬:

queue = []

C:

#include <stdio.h>
#define MAX_SIZE 100

int queue[MAX_SIZE];
int front = 0;
int rear = -1;

Enqueue 연산

파이썬:

def enqueue(item):
    queue.append(item)

C:

void enqueue(int item) {
    if (rear >= MAX_SIZE - 1) {
        printf("Queue overflow!\n");
        return;
    }
    queue[++rear] = item;
}

Dequeue 연산

파이썬:

def dequeue():
    if len(queue) == 0:
        print("Queue underflow!")
        return None
    return queue.pop(0)

C:

int dequeue() {
    if (front > rear) {
        printf("Queue underflow!\n");
        return -1;  // Assuming -1 indicates error
    }
    return queue[front++];
}

Front 연산

파이썬:

def front():
    if len(queue) == 0:
        print("Queue is empty!")
        return None
    return queue[0]

C:

int front() {
    if (front > rear) {
        printf("Queue is empty!\n");
        return -1;  // Assuming -1 indicates error
    }
    return queue[front];
}

파이썬은 내장 리스트를 활용해 큐 구현이 간단한 반면, C에서는 큐의 크기와 위치 등을 관리해야 해서 구현이 복잡해집니다.


0개의 댓글