#include <stdio.h>
#define MAX 10
int queue[MAX];
int front, rear;
void init_queue(void)
{
front = rear = 0;
}
void clear_queue(void)
{
front = rear;
}
int put(int k)
{
if((rear+1)%MAX == front)
{
printf("\n Queue overflow.");
return -1;
}
queue[rear] = k;
rear = ++rear%MAX;
return k;
}
int get(void)
{
int i;
if(front == rear)
{
printf("\n Queue underflow.");
return -1;
}
i=queue[front];
front = ++front%MAX;
return i;
}
void print_queue(void)
{
int i;
printf("\n Queue contents : Front -----> Rear\n");
for(i=front; i != rear; i = ++i%MAX)
printf("%-6d", queue[i]);
}
void main(void)
{
int i;
init_queue();
printf("\nPut 5, 4, 7, 5, 2, 1");
put(5);
put(4);
put(7);
put(5);
put(2);
put(1);
print_queue();
printf("\n\nGet");
i=get();
print_queue();
printf("\ngetting value is %d", i);
printf("\n\nPut 3, 2, 5, 7");
put(3);
put(2);
put(5);
put(7);
print_queue();
printf("\n\nNow queue is full, put 3");
put(3);
print_queue();
printf("\n\ninitialize queue");
clear_queue();
print_queue();
printf("\n\nNow queue is empty, get");
i=get();
print_queue();
printf("\n\ngetting value if %d", i);
}
'프로그래머의 길 > 알고리즘' 카테고리의 다른 글
버블 정렬(Bubble Sort) (0) | 2007.04.02 |
---|---|
후위식 계산기 (0) | 2007.03.30 |
스택 예제 소스 (0) | 2007.03.29 |
스택과 큐, 데크 (0) | 2007.03.29 |
이중 연결 리스트로 구현한 텍스트 뷰어 (2) | 2007.03.28 |