큐를 위해 배열을 지정해 놓고 큐를 쓰다보면 배열의 앞부분이 비게된다는 점을 활용해서 배열의 맨 마지막 부분을 쓰면 다시 제일 처음부터 다시 큐를 채우기 시작하는 형태의 큐이다.
#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;
}
'SW > 자료구조' 카테고리의 다른 글
Binary Tree (0) | 2019.02.23 |
---|---|
Tree (0) | 2019.02.23 |
Queue (0) | 2019.01.06 |
Stack (0) | 2019.01.06 |
Linked List 3 - Circular Linked List (0) | 2019.01.06 |