Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 루비
- maven
- CPP
- rubymine
- boj
- JS
- error
- Shell
- IntelliJ
- Godot
- Vane
- jetbrains
- ruby2d
- Python
- Android
- RaspberryPi
- react
- GitHub
- OTLanguage
- plugin
- gnuplot
- ruby
- Java
- C
- gradle
- 개발노트
- Baekjoon
- kotlin
- Spring
- OAuth
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[C] 선형큐 구조 정리 본문
해당 글에서는 동작 구조를 중심으로 작성하였기 때문에 포화상태 및 공백 상태를 확인하는 코드는 작성하지 않았다는 점 참고 바랍니다.
기본 구조
(element는 저장할 데이터 타입입니다.)
typedef struct {
int front;
int rear;
element data[SIZE];
} QueueType;
front: 현재 위치를 나타냅니다.
rear: 현재 저장되어 있는 아이템 갯수를 나타냅니다.
data: 아이템이 저장되는 위치를 나타냅니다.
선형큐는 초기 값으로 front, rear는 -1값으로 시작하며 한번 할당된 공간은 다시 사용할 수 없으므로 SIZE크기를 다 사용하면 더 이상 사용할 수 없는 특징을 가지고 있습니다.
데이터 추가
PP언어라서 *q를 넘겨줘야한다. 이런 거 볼때마다 C언어에 정이 떨어진다.
아이템 갯수(rear)를 1 증가하고 해당 위치에 값을 넣어주는 작업입니다.
void enqueue(QueueType *q, element item) {
q->data[++(q->rear)] = item;
}
데이터 추출
선형큐는 오래된 순서대로 값을 가지고 오게 됩니다.
현재 위치(front)를 1증가하고 해당 위치의 값을 반환하게 됩니다.
element dequeue(QueueType *q) {
return q->data[++(q->front)];
}
'Language > C' 카테고리의 다른 글
[C] 리스트 add, set, delete간단하게 구현해보기 (0) | 2023.12.18 |
---|---|
[C] 원형큐 구조 정리 (0) | 2023.12.17 |
[C] 거듭제곱 함수 만들기 (0) | 2023.10.23 |
[C] 팩토리얼 함수 만들기 (2) | 2023.10.23 |
[C] 동적 할당 (malloc, calloc, realloc, free) (0) | 2023.06.18 |