배열 큐

개발/Algorithm 2014. 5. 14. 13:14

#include<stdio.h>
#include<stdlib.h>

#define MAX_QUEUE_SIZE 6
typedef int element;
typedef struct{
 element queue[MAX_QUEUE_SIZE];
 int front,rear;
}QueueType;
//
void init(QueueType *q);
int is_empty(QueueType *q);
int is_full(QueueType *q);
void enqueue(QueueType *q,element item);
element dequeue(QueueType *q);
void display_queue(QueueType *q);

int main(void){
 QueueType q;

 init(&q);

 enqueue(&q, 1);
 enqueue(&q, 2);
 enqueue(&q, 3);
 enqueue(&q, 4);
 enqueue(&q, 5);
 dequeue(&q);
 dequeue(&q);
 dequeue(&q);
 dequeue(&q);
 enqueue(&q, 6);
 enqueue(&q, 7);
 display_queue(&q);

 return 0;
}


void init(QueueType *q){
 q->front = 0;
 q->rear = 0;
}

int is_empty(QueueType *q){
 return (q->front == q->rear );
}

int is_full(QueueType *q){
 return (((q->rear)+1)%MAX_QUEUE_SIZE == q->front);
}

void enqueue(QueueType *q,element item){
 if(is_full(q)){
  fprintf(stderr,"QUEUEISFULL");
  return;
 }
 q->rear = (q->rear+1) % MAX_QUEUE_SIZE;
 q->queue[q->rear] = item;
}

element dequeue(QueueType *q){
 if(is_empty(q)){
  fprintf(stderr,"QUEUISEMPTY");
  exit(1);
 }
 q->front = (q->front +1) % MAX_QUEUE_SIZE;
 return q->queue[q->front];
}

void display_queue(QueueType *s){
 QueueType *temp = s;
 int i,count;
 count = (s->front)-(s->rear);
 printf("%d\n",count);
 for(i = (s->front)+1 ; i<MAX_QUEUE_SIZE+count; i++){
  printf("%d <-",temp->queue[i]);
 }
}

'개발 > Algorithm' 카테고리의 다른 글

배열 큐 전체출력  (0) 2014.05.21
연결 큐 미완성  (0) 2014.05.19
후위 표기식 계산  (0) 2014.05.07
괄호 검사 프로그램  (1) 2014.05.07
스택 연결리스트 메모리 누수  (0) 2014.04.30
블로그 이미지

잉비니

,