Queue(큐)

2023. 1. 25. 12:43개인공부/자료구조와 알고리즘

1. 큐란?

큐 한쪽 끝에서 자료를 넣고 반대 쪽 끝에서 자료를 꺼낼 수 있는 선입선출(FIFO, First In First Out) 구조입니다. 따라서 제일 처음 넣은 데이터가 먼저 빠져나오고 큐의 기본함수에는 push, pop, empty, front, back, swap 등이 있습니다.

2. 큐 헤더 파일

QueueSTL을 사용하기 위해서는 헤더파일을 포함해야 합니다. queue<데이터 타입>이름; 으로 queue를 선언합니다.

#include<queue>queue<int>q;

3. 원형 큐 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "CircleQueue.h"
#include <iostream>
 
 
CircleQueue::CircleQueue()
    :Capacity(MAXCAPACITY)
    ,Front(0)
    ,Rear(0)
{
    Values = new int[Capacity];
}
 
CircleQueue::~CircleQueue()
{
    delete[] Values;
}
 
bool CircleQueue::empty()
{
    if (Front == Rear)
        return true;
    else
        return false;
}
 
bool CircleQueue::isFull()
{
    if ((Rear + 1) % Capacity == Front)
        return true;
    else
        return false;
}
 
int CircleQueue::size()
{
    if (Front > Rear)
    {
        return (Capacity - Front + Rear);
    }
    else if(Front < Rear)
    {
        return (Rear - Front);
    }
    else
    {
        return 0;
    }
}
 
int CircleQueue::front()
{
    if (empty())
    {
        std::cout << "Queue is Empty" << std::endl;
        return 0;
    }
    return Values[Front];
}
 
int CircleQueue::back()
{
    if (empty())
    {
        std::cout << "Queue is Empty" << std::endl;
        return 0;
    }
    if (Rear == 0)
    {
        return Values[Capacity - 1];
    }
    return Values[Rear-1];
}
 
void CircleQueue::pop()
{
    if (empty())
    {
        std::cout << "Queue is Empty" << std::endl;
    }
    else
    {
        Front = (Front + 1) % Capacity;
    }
}
 
void CircleQueue::push(int num)
{
    if (!isFull())
    {
        Values[Rear] = num;
        Rear = (Rear + 1) % Capacity;
    }
    else
    {
        std::cout << "Queue is Full" << std::endl;
    }
}
 
 
cs