#include<stdio.h>
#define MAXSIZE 5
int queue[MAXSIZE] = {0};
int front, rear;
void input(int k);
void output();
void view();
int main(){
// input, output, view
int n, k;
front = 0;
rear = 0;
while(1) { // while(1) < 0이 아닌 수를 넣으면 참으로 인식되서 무한 루프를 돌림
printf("1:input, 2:output, 3:view\n");
scanf("%d", &n); // 메뉴 선택을 위한 n변수
switch(n){
case 1:
printf("type your data : ");
scanf("%d", &k); // 추가할 값
input(k); // 함수
break;
case 2:
output();
break;
case 3:
view();
break;
default:
printf("menu error:D\n");
}
}
}
void input(int k){
int i;
if(rear==MAXSIZE) {
if(front==0) {
printf("Queue is Full");
return;
}
else {
// rear = 5, front 3 > total = 2 values
// queue[3] >queue[0]
// queue[4] >queue[1]
for(i=front; i<rear; i++) {
queue[i-front] = queue[i];
queue[i] = 0;
}
rear = rear - front;
front = 0;
}
}
queue[rear++] = k;
}
void output(){
//
if(rear==front) {
printf("Queue is Empty");
rear = 0;
front = 0;
return;
}
printf("output data is %d\n", queue[front]);
queue[front] = 0;
front++;
/*
if(rear==front) {
rear = 0;
front = 0;
}
*/
}
void view(){
int i;
for(i=0;i<MAXSIZE; i++) {
printf("%d > %d\n", i, queue[i]);
}
}