원형 큐입니다.
원형 큐를 이해하기 위해서는 %(나머지) 개념을 잘 이해하시면 됩니다.
empty : 큐가 비었음을 의미하는 함수입니다. front와 rear가 같다면 큐는 비어있는 것입니다.
full : (rear + 1) % MAX_SIZE == front라면 큐가 꽉차 있음을 의미합니다.
다른 부분은 일반 큐와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <stdio.h> #define MAX_SIZE 100 typedef struct round_queue { int queue[MAX_SIZE]; int front, rear; int size; round_queue() { size = 0; front = 0; rear = 0; } int empty() { return front == rear; } int push(int value) { if ((rear + 1) % MAX_SIZE == front) { return 0; } size++; rear = (rear + 1) % MAX_SIZE; queue[rear] = value; } int pop() { if (empty()) { return -1; } size--; front = (front + 1) % MAX_SIZE; return queue[front]; } }round_queue; int main(int argc, char* argv[]) { int T, N; scanf("%d", &T); for (int test_case = 1; test_case <= T; test_case++) { scanf("%d", &N); round_queue rq; for (int i = 0; i < N; i++) { int value; scanf("%d", &value); rq.push(value); } printf("#%d\n", test_case); while(!rq.empty()) printf("%d ", rq.pop()); printf("\n"); } return 0; } | cs |
'CS기본지식 > 자료구조' 카테고리의 다른 글
[1918] 후위표기식 (0) | 2017.11.27 |
---|---|
[C언어] 우선순위 큐(Priority Queue) (3) | 2017.09.07 |
[2263] 트리의 순회 (1) | 2017.08.27 |
스택 계산기 (0) | 2017.06.13 |
[1918] 후위표기식 (2) | 2017.06.13 |