선형 큐의 기본 설명은 '선형 큐 (구조체로 구현)' 글에서 설명을 했으므로 생략하겠다.
단순 배열로 큐의 동작 상태를 보기 위해 구현한 코드를 바로 보이겠다.
선형 큐의 동작 상태 코드
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
int front;
int rear;
int data[MAX];
// 선형 큐 초기화
void init_queue()
{
rear = -1;
front = -1;
}
// 선형 큐 상태 출력
void queue_print()
{
for (int i = 0; i<MAX; i++) {
if (i <= front || i> rear)
printf(" | ");
else
printf("%d | ", data[i]);
}
printf("\n");
}
// 선형 큐가 포화상태인가?
int is_full()
{
if (rear == MAX - 1 )
return 1;
else
return 0;
}
// 선형 큐가 공백상태인가?
int is_empty()
{
if ( front == rear ) //front==rear이면 빈 상태
return 1;
else
return 0;
}
// 선형 큐에 데이터 삽입
void enqueue(int item)
{
if (is_full()) {
printf("큐가 포화상태입니다.\n");
return;
}
data[ ++(rear) ] = item;
}
// 선형 큐에서 데이터 제거
int dequeue()
{
if (is_empty()) {
printf("큐가 공백상태입니다.\n");
return -1;
}
int item = data[ ++(front) ];
return item;
}
int main(void)
{
init_queue();
dequeue(); queue_print();
enqueue(1); queue_print();
enqueue(2); queue_print();
enqueue(3); queue_print();
enqueue(4); queue_print();
enqueue(5); queue_print();
enqueue(6); queue_print();
dequeue(); queue_print();
dequeue(); queue_print();
dequeue(); queue_print();
dequeue(); queue_print();
dequeue(); queue_print();
dequeue();
return 0;
}
실행 결과
큐가 공백상태입니다.
| | | | |
1 | | | | |
1 | 2 | | | |
1 | 2 | 3 | | |
1 | 2 | 3 | 4 | |
1 | 2 | 3 | 4 | 5 |
큐가 포화상태입니다.
1 | 2 | 3 | 4 | 5 |
| 2 | 3 | 4 | 5 |
| | 3 | 4 | 5 |
| | | 4 | 5 |
| | | | 5 |
| | | | |
큐가 공백상태입니다.
'자료구조 > 큐' 카테고리의 다른 글
큐 (연결리스트로 구현) (0) | 2021.12.29 |
---|---|
원형 큐 (구조체로 구현) (0) | 2021.12.29 |
원형 큐 (배열로 구현) (0) | 2021.12.29 |
선형 큐 (구조체로 구현) (0) | 2021.12.28 |