밑의 원형큐코드에서 show을 할때 값이 제대로 안돌아 옵니다.

조회수 450회
#include <stdio.h> 
#include <stdlib.h>
#define MAX_QUEUE_SIZE 6 //5+1(빈칸)
char queue[MAX_QUEUE_SIZE] = {NULL};
int rear = 0;
int front = 0;
void queueFull() {
    fprintf(stderr, "큐가 가득 참");
    exit(1);
}
void queueEmpty() {
    fprintf(stderr, "큐가 비어 있음");
    exit(1);
}
void addq(char item)
{
    rear = (rear + 1) % MAX_QUEUE_SIZE;
    if (front == rear)
        queueFull();
    queue[rear] = item;
}
char deleteq() {
    char a;
    if (front == rear)
        queueEmpty();
    front = (front + 1) % MAX_QUEUE_SIZE;
    return queue[front];
}
void show()
{
    printf("원형큐에 저장된 값 목록\n\n");
    printf("(마지막으로 들어온 수)  ");
    for (int i = rear; i >= front; i--)
        printf("%c ", queue[(front + i) % MAX_QUEUE_SIZE]);
    printf("(첫번째로 들어온 수)\n");
    printf("\n");
}
void main()
{
    int menu = 0;
    char ch;
    printf("출력은 1, 입력은 2, 삭제는 3을 입력하시오 (4)입력시 종료\n");


    while (menu != 4) {
        printf("입력 : ");
        scanf_s("%d", &menu);
        getchar();
        printf("\n");
        switch (menu)
        {
        case 1:
            show();
            break;
        case 2:
            printf("넣을 값을 입력하세요 : ");
            scanf_s("%c", &ch);
            addq(ch);
            printf("\n");
            break;
        case 3:
            deleteq();
            break;
        }
    }
}

값을 abc넣고 두번 delet해서 show하면 두개만 삭제했는데 전부 삭제되어 나옵니다. 문제가 뭐죠?

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)