본문 바로가기
프로그래머의 길/알고리즘

원형 큐 구현 소스

by 하늘아래. 2007. 3. 29.
반응형

#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);
}  

반응형