posted by 코딩 공부중 2019. 2. 11. 20:13

#include

#include #pragma warning(disable:4996) #define cQ_SIZE 100 typedef int element; // 큐 원소(element)의 자료형을 char로 정의 typedef struct { element queue[cQ_SIZE]; // 1차원 배열 큐 선언 int front, rear; int count; } QueueType; QueueType *createQueue() { QueueType *cQ; cQ = (QueueType *)malloc(sizeof(QueueType)); cQ->front = 0; // front 초깃값 설정 cQ->rear = 0; // rear 초깃값 설정 cQ->count = 0; return cQ; }// 원형 큐가 공백 상태인지 검사하는 연산 int isEmpty(QueueType *cQ) { if (cQ->front == cQ->rear) { printf(" Circular Queue is empty! "); return 1; } else return 0; } // 원형 큐가 포화 상태인지 검사하는 연산 int isFull(QueueType *cQ) { if (((cQ->rear + 1) % cQ_SIZE) == cQ->front) { printf(" Circular Queue is full! "); return 1; } else return 0; } // 원형 큐의 rear에 원소를 삽입하는 연산 void enQueue(QueueType *cQ, element item1) { if (isFull(cQ)) return; else { cQ->rear = (cQ->rear + 1) % cQ_SIZE; cQ->queue[cQ->rear] = item1; (cQ->count) += 1; } } // 원형 큐의 front에서 원소를 삭제하고 반환하는 연산 element deQueue(QueueType *cQ) { if (isEmpty(cQ)) exit(1); else { cQ->front = (cQ->front + 1) % cQ_SIZE; (cQ->count) -= 1; return cQ->queue[cQ->front]; } } // 원형 큐의 가장 앞에 있는 원소를 검색하는 연산 element peek(QueueType *cQ) { if (isEmpty(cQ)) exit(1); else return cQ->queue[(cQ->front + 1) % cQ_SIZE]; } // 원형 큐의 원소를 출력하는 연산 void printQ(QueueType *cQ) { int i, first, last; first = (cQ->front + 1) % cQ_SIZE; last = (cQ->rear + 1) % cQ_SIZE; printf("["); i = first; while (i != last) { printf(" %d ", cQ->queue[i]); i = (i + 1) % cQ_SIZE; } printf("]"); } void main(void){ QueueType *cQ = createQueue(); // 큐 생성 element data, i, num1, num2; printf("\n ***** 원형 큐 연산 ***** \n"); while (1) { if (cQ->count != 10) { scanf("%d", &num1); scanf("%d", &num2); enQueue(cQ, num1); enQueue(cQ, num2); printf("dequeue : %d\n", deQueue(cQ)); printf("Current Circular Queue : "); printQ(cQ); printf(" , Queue size : %d\n\n", cQ->count); } else { printf("\n10개가 들어있기 때문에 전부 dequeue\n"); for (i = 0; i < 10; i++) printf("dequeue : %d\n", deQueue(cQ)); } } printQ(cQ); }

 실행결과


'자료구조,알고리즘' 카테고리의 다른 글

(알고리즘) sum of subset 문제해결  (0) 2019.02.11
(알고리즘)m-coloring 문제해결  (0) 2019.02.11
선택정렬  (0) 2019.02.10
퀵 정렬 코드 및 실행결과  (0) 2019.02.10
퀵 정렬  (0) 2019.02.10