david의 CS Blog 자세히보기

자료구조

큐(Queue)

david0506 2021. 2. 11. 10:58

큐(Queue)란?

 

큐는 스택과 달리 먼저 들어온 데이터가 먼저 나가는 자료구조이다. 줄을 서 있는 사람들을 생각하면 편할 것이다.

 

큐는 스택와 다르게 삽입과 삭제가 같은 곳에서 일어나지 않는다. 삭제연산은 앞(front)에서 일어나고 삽입 연산은 뒤(rear)에서 일어난다.

 

 

이 그림에서 원소 $D$를 추가하면 $C$ 뒤에 추가되고

 

삭제연산을 하면 가장 맨 앞의 $A$가 삭제된다.

 

이렇게 먼저 들어온 원소가 먼저 나가는 형태를 선입선출(FIFO: First-In-First-Out)이라고 한다.

 

Queue의 기능

  • $push(x)$: $x$를 큐의 맨 뒤에 추가한다.
  • $pop()$: 큐의 맨 앞의 원소를 삭제한다.
  • $empty()$: 큐가 비어있으면 $1(true)$, 아니면 $0(false)$을 리턴한다.
  • $front()$: 큐의 맨 앞의 원소를 리턴한다.
  • $size()$: 큐의 원소들의 개수를 리턴한다.

queue 구현

 

class Queue{
    int data[101];
    int front;
    int rear;
    public:
        Queue(){ front=rear=0; }
        bool Empty(){
            return front==rear;
        }
        void push(int x){
            data[++rear]=x;
        }
        void pop(){
            if(Empty()){ return; }
            data[front]=0;
            front++;
        }
        int Front(){
            return Front;
        }
        int Size(){
            return Front-rear;
        }
        
};

 

STL을 사용한 코드이다.

 

 

#include <iostream>
#include <queue>

using namespace std;


int main()
{
    queue<int> q;
    q.push(3);
    q.push(5);
    q.pop();
    cout << q.front() << "\n";
    cout << q.empty() << "\n";
    q.push(10);
    cout << q.size() << "\n";
    return 0;
}

 

 

 

큐는 컴퓨터 장치들 사이에서 데이터를 주고받을 때 임시 기억 장치로 사용되는데 이것을 버퍼라고 한다.

 

또한 큐는 일상생활이나 컴퓨터에서 매우 광범위하게 사용된다.

 

BFS(너비 우선 탐색)을 응용한 미로찾기나 그 외의 다양한 알고리즘에서도 큐가 사용된다.

 

 

https://david0506.tistory.com/8

 

그래프 탐색-너비 우선 탐색(BFS)

BFS란? BFS(breadth first search): 모든 방향으로 조금씩 탐색하는 방법 즉 임의의 노드(보통은 루트 노드)에서 시작하여 인접한 노드를 먼저 탐색하는 방법이다. 이를 구현하기 위해 선입선출의 자료구

david0506.tistory.com

 

'자료구조' 카테고리의 다른 글

Union Find  (0) 2021.02.11
스택(Stack)  (0) 2021.02.11