Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 과초점거리
- 렌즈
- 고정비트레이트
- 변수
- Digital Slow Shutter
- 아이리스
- camera
- Pixel Bit Format
- 저조도
- 실생활알고리즘
- CS Mount
- Patch Cleaner
- c언어
- AppInventer
- ASCCII
- 저장소와 동적메모리
- 무게선별자동화
- Gain
- image sensor
- 조건 제어문
- 프로그래머스 lv2
- 카메라
- 변수의 초기화와 대입
- 간단한 앱만들어보기
- 심도
- main 함수 인자 전달
- C Mount
- Zoom Lense
- Depth of Fileld
- 이미지센서
Archives
- Today
- Total
카메라 개발자 공부방(SW)
큐(queue) 본문
반응형
이번엔 queue에 대해 이야기해보겠습니다. queue는 먼저 들어온 데이터가 먼저 나가는 First In First Out 구조입니다.
Stack과 마찬가지로 STL에선 deque로 대신할 수 있기 때문에 라이브러리 형태로 제공되진 않습니다.
대표적인 함수의 인터페이스는 아래와 같습니다.
push: 데이터를 입력하면 맨앞단에 추가됩니다.
pop: 맨앞단의 데이터를 삭제합니다.
front: 맨앞의 데이터를 반환합니다.
empty: 메모리가 비어있는지 확인하여 true or false를 반환합니다.
full: 메모리에 데이터가 가득 차 있는지 확인하여 true or false를 반환합니다
queue의 경운 내부적으로 1차원 배열을 사용하지만 논리적으로 배열을 순환하게있게 작성을 해 circular queue 형태로 사용을 합니다.
tail 앞에 head가 위치하면 메모리가 가득 찬 상태며 head와 tail이 같은 위치를 가리키면 비어있는 상태입니다.
이번엔 코드로 작성해보겠습니다.
#include <iostream>
using namespace std;
template <typename T>
class queue
{
private:
#define MAX_SIZE 4
T dataArray[MAX_SIZE];
int head, tail;
public:
queue():head(0), tail(0)
{
memset(dataArray, 0, sizeof(dataArray));
}
~queue() {}
void push(T data)
{
if (full())
{
printf("queue is full\n");
return;
}
dataArray[tail] = data;
tail = (tail + 1) % MAX_SIZE;
}
void pop()
{
if (empty())
{
printf("queue is empty\n");
return;
}
head = (head + 1) % MAX_SIZE;
}
T front()
{
if (empty())
{
printf("queue is empty\n");
}
return dataArray[head];
}
bool full()
{
return ((tail + 1) % MAX_SIZE) == head;
}
bool empty()
{
return head == tail;
}
void print()
{
int h = head, t = tail;
while (h != t)
{
printf("%d ", dataArray[h]);
h = (h + 1) % MAX_SIZE;
}
printf("\n");
}
};
int main()
{
queue<int> que;
que.push(1);
que.print();
que.push(2);
que.print();
que.push(3);
que.print();
cout << "front: "<< que.front() << endl;
que.push(4);
que.print();
return 0;
}
'자료구조&알고리즘' 카테고리의 다른 글
레드블랙트리 (0) | 2022.01.09 |
---|---|
이진 탐색 트리(Binary Search Tree) (0) | 2021.12.26 |
무게 선별작업 자동화 프로그램 (0) | 2021.12.10 |
스택(Stack) (0) | 2021.11.28 |
덱(Deque) (0) | 2021.11.27 |
Comments