SW/자료구조
Circular Queue
MG_
2019. 1. 6. 22:11
큐를 위해 배열을 지정해 놓고 큐를 쓰다보면 배열의 앞부분이 비게된다는 점을 활용해서 배열의 맨 마지막 부분을 쓰면 다시 제일 처음부터 다시 큐를 채우기 시작하는 형태의 큐이다.
#include <stdio.h>
#include <malloc.h>
#define MAX 10
int queue[MAX];
int front, rear;
int put(int data)
{
if ((rear + 1) % MAX == front) {
printf("Queue overflow\n");
return -1;
}
queue[rear++] = data;
rear = rear % MAX;
return data;
}
int get() {
if (front == rear) {
printf("There is no data in Queue\n");
return -1;
}
int idx = front;
front = (front + 1) % MAX;
return queue[idx];
}
void printList() {
int i;
printf("Queue :");
for (i = front; i < rear; ++i) {
printf(" %d", queue[i]);
}
printf("\n");
}
int main()
{
int i;
front = rear = 0;
get();
for (i = 0; i < 11 ; ++i) {
put(i);
}
printList();
get();
printList();
return 0;
}