#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 |