배열 전체 크기가 5라 할때
head가 2를 가리키고 있으면,
0,1 값이 비워있어도 이용이 안되는걸
매번 for문등으로 당기자니 느릴께 뻔해서
이리저리 하고 보니
결론은 원형큐가 되었습니다.
젠장..
#include <stdio.h>
#define QUEUE_SIZE 10
int queue[QUEUE_SIZE];
int head = 0;
int tail = -1;
int queue_size = 0;
int insert(int num)
{
if (queue_size >= QUEUE_SIZE)
{
printf("queue full!\n");
return 0;
}
tail = (tail + 1) % QUEUE_SIZE;
queue_size++;
queue[tail] = num;
printf("%d 삽입됨\n", num);
}
void exec()
{
if (queue_size == 0)
{
printf("queue empty!\n");
return 0;
}
printf("[%d]\n", queue[head]);
queue[head] = NULL;
head = (head + 1) % QUEUE_SIZE;
queue_size--;
}
int main(void)
{
int input;
while (1)
{
printf("\ninput number: ");
scanf_s("%d", &input);
if (input==0)
{
exec();
}
else if (input==-1)
{
return 0;
}
else
{
insert(input);
}
}
return 0;
}