정보선생님 수아

큐 ( Queue ) 본문

C&C++/Algorithm

큐 ( Queue )

정보선생님 수아 :D 2020. 8. 26. 16:00

#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]);
    }
}

'C&C++ > Algorithm' 카테고리의 다른 글

스택 ( Stack )  (0) 2020.08.26
GraphSourceCode  (0) 2020.08.25
Comments