fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define QUEUE_SIZE 100
  4.  
  5. typedef int element;
  6. element queue[QUEUE_SIZE]; // 큐 배열 선언
  7. int front = -1, rear = -1; // front와 rear 초기화
  8.  
  9. int isEmpty() {
  10. return front == rear;
  11. }
  12.  
  13. int isFull() {
  14. return rear == QUEUE_SIZE - 1;
  15. }
  16.  
  17. void enqueue(element item) {
  18. if (isFull()) {
  19. printf("\nQueue is Full!\n");
  20. return;
  21. }
  22. queue[++rear] = item;
  23. }
  24.  
  25. element dequeue() {
  26. if (isEmpty()) {
  27. printf("\nQueue is Empty!\n");
  28. return -1;
  29. }
  30. return queue[++front];
  31. }
  32.  
  33. element peek() {
  34. if (isEmpty()) {
  35. printf("\nQueue is Empty!\n");
  36. exit(1);
  37. }
  38. return queue[front + 1];
  39. }
  40.  
  41. void printQueue() {
  42. if (isEmpty()) {
  43. printf("\nQueue is Empty!\n");
  44. return;
  45. }
  46. printf("\nQueue [ ");
  47. for (int i = front + 1; i <= rear; i++) {
  48. printf("%d ", queue[i]);
  49. }
  50. printf("]\n");
  51. }
  52.  
  53. int main(void) {
  54. element item;
  55.  
  56. printf("큐 연산\n");
  57. printQueue();
  58.  
  59. enqueue(10); printQueue();
  60. enqueue(20); printQueue();
  61. enqueue(30); printQueue();
  62.  
  63. item = peek();
  64. printf("peek => %d\n", item);
  65.  
  66. item = dequeue();
  67. printQueue();
  68. printf("\tdequeue => %d\n", item);
  69.  
  70. item = dequeue();
  71. printQueue();
  72. printf("\tdequeue => %d\n", item);
  73.  
  74. item = dequeue();
  75. printQueue();
  76. printf("\tdequeue => %d\n", item);
  77.  
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
큐 연산

Queue is Empty!

Queue [ 10 ]

Queue [ 10 20 ]

Queue [ 10 20 30 ]
peek => 10

Queue [ 20 30 ]
	dequeue => 10

Queue [ 30 ]
	dequeue => 20

Queue is Empty!
	dequeue => 30