일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 티스토리챌린지
- Machine Learning
- 회귀
- PCA
- 지도학습
- gpt
- LLM
- AI
- OpenAI
- 분류
- supervised learning
- regression
- LG
- GPT-4
- 오블완
- 머신러닝
- LG Aimers 4th
- 딥러닝
- ChatGPT
- Classification
- LG Aimers
- deep learning
- 해커톤
Archives
- Today
- Total
SYDev
[자료구조] Chapter 4. Queue 본문
경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.
What is Queue?
- Queue: 가장 처음에 들어간 데이터가 가장 먼저 나오는 선입선출, FIFO(First-In, First-Out)의 자료구조를 가진다.
- homogeneous items의 oerdered group
- rear - new element가 삽입되는 위치 -> enqueue
- front - element가 삭제되는 위치 -> dequeue
- ex) job buffers, network buffers, ...
1. Queue 자료구조의 ADT
Constructor:
QueueType(int maxQue);
Transformer:
void enqueue(ItemType value);
- rear 위치로 value 삽입
ItemType dequeue();
- first 위치의 value를 queue에서 삭제 및 해당 값 반환
void clear();
- queueu 내부의 value 모두 삭제
Observer:
bool isFull() const;
bool isEmpty() const;
2. Queue 자료구조 Implementation
template<class ItemType>
class QueueType {
private:
ItempType * data;
int front;
int rear;
int maxQueue;
public:
QueueType(int maxQue);
void enqueue(ItemType value);
ItemType dequeue();
void clear();
bool isFull() const;
bool isEmpty() const;
~QueueType();
}
template<class ItemType>
QueueType<ItemType>::QueueType(int maxQue) {
//constructor -- No return type
maxQueue = maxQue + 1;
front = maxQueue - 1;
rear = maxQueue - 1;
data = new ItemType[maxQueue];
}
// O(1)
template<class ItemType>
void QueueType<ItemType>::enqueue(ItemType newItem) {
rear = (rear + 1) % maxQueue;
data[rear] = newItem;
}
// O(1)
template<class ItemType>
ItemType QueueType<ItemType>::dequeue() {
front = (front + 1) % maxQueue;
return data[front];
}
// O(1)
template<class ItemType>
bool QueueType<ItemType>::isFull() const {
return (rear == front);
}
// O(1)
template<class ItemType>
bool QueueType<ItemType>::isEmpty() const {
return ((rear + 1) % maxQueue == front);
}
// O(1)
template<class ItempType>
int QueueType<ItemType>::size() const {
return maxQueue;
}
template<class ItemType>
QueueType<ItemType>::~QueueType() {
//Destructor
delete [] data;
}
- Full vs Empty
-> 빈 공간이 없이 구현할 경우, full과 empty 상황이 겹침
-> Reserved 공간을 하나 확보해야 full과 empty 상황이 겹치지 않는다.
- (index + 1) % maxQueue 수식
- circular queue의 특성에 따라, max index를 넘어갈 때 다시 처음으로 돌아올 수 있도록 계산
'3학년 2학기 전공 > 자료구조' 카테고리의 다른 글
[자료구조] Chapter 5. Linked Structures (0) | 2024.10.14 |
---|---|
[자료구조] Chapter 4-1. Programming Tips (2) | 2024.10.02 |
[자료구조] Chapter 3. Stack (3) | 2024.09.30 |
[자료구조] Chapter 2. Unsorted/Sorted Lists (0) | 2024.09.17 |
[자료구조] Chapter 1. Software, Data Structure, and C++ (0) | 2024.09.13 |