원형 큐의 기본 설명은 '원형 큐 (배열로 구현)'에서 이미 했으므로 생략하겠다.
바로 구조체로 구현한 원형 큐의 동작 상태를 볼 수 있는 코드로 넘어가겠다.
원형 큐 구현
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 5
typedef struct Queue {
int queue[MAX];
int front, rear;
}Queue;
void init_queue(Queue* q)
{
q->front = q->rear = 0; //front, rear 0으로 초기화
}
int empty(Queue* q)
{
return (q->front == q->rear);
}
int full(Queue* q)
{
return (q->front == ((q->rear+1)%MAX));
}
void enqueue(Queue* q, int data)
{
if (full(q))
{
printf("큐가 포화상태입니다. 데이터 삽입을 취소합니다.\n");
return;
}
else
{
q->rear = (q->rear + 1) % MAX;
q->queue[q->rear] = data;
}
}
int dequeue(Queue* q)
{
if (empty(q))
return -1;
else
{
q->front = (q->front + 1) % MAX;
return q->queue[q->front];
}
}
int main() {
Queue* queue=(Queue*)malloc(sizeof(Queue));
char Get_Com[10];
int N,pushnum;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s",Get_Com);
if(strcmp(Get_Com,"enqueue")==0)
{
scanf("%d",&pushnum);
enqueue(queue,pushnum);
}
else if(strcmp(Get_Com,"dequeue")==0)
printf("%d\n",dequeue(queue));
else if(strcmp(Get_Com,"empty")==0)
printf("%d\n",empty(queue));
else if(strcmp(Get_Com,"full")==0)
printf("%d\n",full(queue));
}
return 0;
}
'자료구조 > 큐' 카테고리의 다른 글
큐 (연결리스트로 구현) (0) | 2021.12.29 |
---|---|
원형 큐 (배열로 구현) (0) | 2021.12.29 |
선형 큐 (배열로 구현) (0) | 2021.12.29 |
선형 큐 (구조체로 구현) (0) | 2021.12.28 |