-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMemberQueue.cpp
More file actions
97 lines (87 loc) · 1.74 KB
/
Copy pathMemberQueue.cpp
File metadata and controls
97 lines (87 loc) · 1.74 KB
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
#include "MemberQueue.h"
#include <cstdlib>
using namespace std;
MemberQueue::MemberQueue()
{
maxSize = 100;
queueArray = new MemberQueueNode[maxSize];
frontIndex = 0;
rearIndex = -1;
currentSize = 0;
}
MemberQueue::~MemberQueue()
{
delete[] queueArray;
}
bool MemberQueue::empty()
{
return currentSize == 0;
}
bool MemberQueue::full()
{
return currentSize == maxSize;
}
void MemberQueue::push(const MemberQueueNode& newNode)
{
if (full())
{
// Queue가 꽉 차 있을 때 처리 (예외 처리 등)
// 여기서는 간단히 프로그램 종료
exit(1);
}
else
{
rearIndex = (rearIndex + 1) % maxSize;
queueArray[rearIndex] = newNode;
currentSize++;
}
}
MemberQueueNode MemberQueue::pop()
{
if (empty())
{
// Queue가 비어 있을 때 처리 (예외 처리 등)
// 여기서는 간단히 프로그램 종료
exit(1);
}
else
{
MemberQueueNode poppedNode = queueArray[frontIndex];
frontIndex = (frontIndex + 1) % maxSize;
currentSize--;
return poppedNode;
}
}
MemberQueueNode MemberQueue::front()
{
if (empty())
{
// Queue가 비어 있을 때 처리 (예외 처리 등)
// 여기서는 간단히 프로그램 종료
exit(1);
}
else
{
return queueArray[frontIndex];
}
}
bool MemberQueue::isEmpty() const
{
return currentSize == 0;
}
bool MemberQueue::enqueue(const MemberQueueNode& newNode)
{
if (full())
{
// Queue가 꽉 차 있을 때 처리 (예외 처리 등)
// 여기서는 간단히 프로그램 종료
exit(1);
}
else
{
rearIndex = (rearIndex + 1) % maxSize;
queueArray[rearIndex] = newNode;
currentSize++;
return true; // 노드 추가 성공
}
}