2012년 9월 29일 토요일
[C] queue
#define QUEUESIZE 256 //size변경하면서 테스트 해볼 것
#define TRUE 1
#define FALSE 0
typedef struct{
int q[QUEUESIZE+1];
int first;
int last;
int count;
} queue;
/*큐에 대한 함수(circular queue)*/
void init_queue(queue *q) //큐 초기화
{
q->first = 0;
q->last = QUEUESIZE-1;
q->count = 0;
}
void enqueue(queue *q, int x) //큐에 값을 저장하는 함수
{
if (q->count >= QUEUESIZE)
printf("Warning: queue overflow enqueue x=%d\n", x);
else{
q->last = (q->last+1) % QUEUESIZE;
q->q[ q->last ] = x;
q->count = q->count+1;
}
}
int dequeue(queue *q) //큐에서 값을 빼오는 함수
{
int x;
if(q->count <= 0) printf("Warning: empty queue dequeue.\n");
else{
x = q->q[ q->first ];
q->first = (q->first+1) % QUEUESIZE;
q->count = q->count - 1;
}
return(x);
}
int empty(queue *q) //큐가 비었는지 확인하는 함수, 비었으면 TRUE리턴
{
if(q->count <= 0) return(TRUE);
else return(FALSE);
}
/*큐에 대한 함수 끝*/
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기