밑의 원형큐코드에서 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하면 두개만 삭제했는데 전부 삭제되어 나옵니다. 문제가 뭐죠?
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력