Queue : 큐
- 특징
1) 선입선출(FIFO) 구조를 가지는 자료구조
2) 삽입은 enqueue, 삭제는 dequeue 연산을 사용
- 장점
1) 구현이 간단하다
2) 작업 처리 대기열, 메세지 전달 등에서 유용하다
- 단점
1) 큐의 크기가 고정되어 있을 때, 큐가 가득 차면 더 이상 데이터를 추가할 수 없다
Queue.h
#pragma once
void DoQueue();
class Queue
{
public:
Queue();
bool Empty();
bool Full();
int GetSize();
void Enqueue(DataType data);
void Dequeue();
DataType GetFront();
private:
int Front;
int Rear;
int Size;
DataType Data[MAX_SIZE];
};
Queue.cpp
#include "../../stdafx.h"
#include "Queue.h"
void DoQueue()
{
Queue q;
q.Enqueue(23);
q.Enqueue(5242);
q.Enqueue(151);
cout << "Queue Size : " << q.GetSize() << endl;
cout << "Front element : " << q.GetFront() << endl;
q.Dequeue();
cout << "Front element : " << q.GetFront() << endl;
q.Dequeue();
cout << "Front element : " << q.GetFront() << endl;
q.Dequeue();
cout << "Front element : " << q.GetFront() << endl;
q.Dequeue();
cout << "Queue Size : " << q.GetSize() << endl;
Pause;
return;
}
Queue::Queue()
: Front(0), Rear(0), Size(0) {}
bool Queue::Empty()
{
return Size == 0;
}
bool Queue::Full()
{
return Size == MAX_SIZE;
}
int Queue::GetSize()
{
return Size;
}
void Queue::Enqueue(DataType data)
{
if (Full())
{
cout << "Queue is Full" << endl;
return;
}
Data[Rear] = data;
Rear = (Rear + 1) % MAX_SIZE;
Size++;
}
void Queue::Dequeue()
{
if (Empty())
{
cout << "Queue is Empty" << endl;
return;
}
Front = (Front + 1) % MAX_SIZE;
Size--;
}
DataType Queue::GetFront()
{
if (Empty())
{
cout << "Queue is Empty" << endl;
return DataType();
}
return Data[Front];
}
'자료구조' 카테고리의 다른 글
[C++/자료구조] 힙(Heap) (0) | 2023.07.15 |
---|---|
[자료구조] 자료구조별 게임의 기능 구현 예시 (0) | 2023.07.14 |
[C++/자료구조] 이진트리(Binary Tree) (0) | 2023.07.08 |
[C++/자료구조] 스택(Linked List) (0) | 2023.07.08 |
[C++/자료구조] 연결 리스트(Linked List) & 양방향 연결 리스트(Double Linked List) (0) | 2023.07.08 |
댓글