공부하시는대에 도움이 됐으면 좋겠습니다.
답안코드 확인해주세요!
더보기
#include <stdio.h>
#include <stdlib.h>
#define Q_SIZE 4
typedef char element; // 큐 원소(element)의 자료형을 char로 정의
typedef struct {
element queue[Q_SIZE]; // 1차원 배열 큐 선언
int front, rear;
} QueueType;
// 공백 순차 큐를 생성하는 연산
QueueType *createQueue() {
QueueType *Q;
Q = (QueueType *)malloc(sizeof(QueueType));
Q->front = -1; // front 초깃값 설정
Q->rear = -1; // rear 초깃값 설정
return Q;
}
// 순차 큐가 공백 상태인지 검사하는 연산
int isEmpty(QueueType *Q) {
if (Q->front == Q->rear) {
printf(" Queue is empty! ");
return 1;
}
else return 0;
}
// 순차 큐가 포화 상태인지 검사하는 연산
int isFull(QueueType *Q) {
if (Q->rear == Q_SIZE - 1) {
printf(" Queue is full! ");
return 1;
}
else return 0;
}
// 순차 큐의 rear에 원소를 삽입하는 연산
void enQueue(QueueType *Q, element item) {
if (isFull(Q)) return; // 포화 상태이면, 삽입 연산 중단
else {
Q->rear++;
Q->queue[Q->rear] = item;
}
}
// 순차 큐의 front에서 원소를 삭제하는 연산
element deQueue(QueueType *Q) {
if (isEmpty(Q)) return; // 공백 상태이면, 삭제 연산 중단
else {
Q->front++;
return Q->queue[Q->front];
}
}
// 순차 큐의 가장 앞에 있는 원소를 검색하는 연산
element peek(QueueType *Q) {
if (isEmpty(Q)) exit(1); // 공백 상태이면 연산 중단
else return Q->queue[Q->front + 1];
}
// 순차 큐의 원소를 출력하는 연산
void printQ(QueueType *Q) {
int i;
printf(" Queue : [");
for (i = Q->front + 1; i <= Q->rear; i++)
printf("%3c", Q->queue[i]);
printf(" ]");
}
void main(void) {
QueueType *Q1 = createQueue(); // 큐 생성
element data;
printf("\n ***** 순차 큐 연산 ***** \n");
printf("\n 삽입 A>>"); enQueue(Q1, 'A'); printQ(Q1);
printf("\n 삽입 B>>"); enQueue(Q1, 'B'); printQ(Q1);
printf("\n 삽입 C>>"); enQueue(Q1, 'C'); printQ(Q1);
data = peek(Q1); printf(" peek item : %c \n", data);
printf("\n 삭제 >>"); data = deQueue(Q1); printQ(Q1);
printf("\t삭제 데이터: %c", data);
printf("\n 삭제 >>"); data = deQueue(Q1); printQ(Q1);
printf("\t삭제 데이터: %c", data);
printf("\n 삭제 >>"); data = deQueue(Q1); printQ(Q1);
printf("\t\t삭제 데이터: %c", data);
printf("\n 삽입 D>>"); enQueue(Q1, 'D'); printQ(Q1);
printf("\n 삽입 E>>"); enQueue(Q1, 'E'); printQ(Q1);
getchar();
}
더 많은 C코드가 보고 싶다면?
'C언어' 카테고리의 다른 글
[C언어] 연결큐 linked queue를 생성 검사 삽입 삭제 검색 하는 프로그램을 작성하는 프로그램을 작성하시오 (0) | 2022.12.10 |
---|---|
[C언어] 원형 큐 프로그램을 작성하고 테스트하시오 (0) | 2022.12.10 |
[C언어] 스택(stack) 에서 후위 표기법 수식을 계산하는 evalPostfix(char *exp) 함수를 작성하고 테스트하는 프로그램을 작성하시오 (0) | 2022.12.10 |
[C언어] 스택 isfull push pop peek print 하는 함수를 작성 구현하고 스택을 테스트하는 프로그램을 작성하시오 (0) | 2022.12.10 |
[c언어] 다항식 리스트를 생성 덧셈 추가 출력하는 함수를 작성하고 테스트하는 프로그램을 작성하시오 (0) | 2022.12.10 |
댓글