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 |
'개인공부 > 자료구조와 알고리즘' 카테고리의 다른 글
레드블랙트리 - 삭제 (0) | 2023.03.10 |
---|---|
레드블랙트리 증감연산자 / C++ (0) | 2023.03.10 |
레드블랙트리 insert구현 / C++ (0) | 2023.03.09 |
레드블랙트리 (자가균형 이진탐색트리) (0) | 2023.03.08 |
STL 정렬 sort 함수 (0) | 2023.02.09 |