fork download
  1. #include <stdio.h>
  2. #define QUEUE_SIZE 5
  3. int queue[QUEUE_SIZE];
  4. int front = 0; /* 先頭ポインタ */
  5. int rear = 0; /* 末尾ポインタ */
  6.  
  7. int enQueue(int x){
  8. printf("enQueue() front = %d rear = %d\n", front, rear);
  9. if( ((rear+1) % QUEUE_SIZE) == front ){
  10. return -1;
  11. }
  12. queue[rear] = x;
  13. rear = (rear + 1) % QUEUE_SIZE;
  14. return 1;
  15. }
  16.  
  17. int deQueue(){
  18. printf("deQueue() front = %d rear = %d\n", front, rear);
  19. if( front == rear ){
  20. printf("deQueue() queue empty\n");
  21. return -1;
  22. }
  23.  
  24. int x = queue[front];
  25. front = (front + 1) % QUEUE_SIZE;
  26. printf("deQueue: %d\n", x);
  27. return x;
  28. }
  29.  
  30. void printQueue(void){
  31. printf("printQueue: ");
  32.  
  33. int i = front;
  34. while(i != rear){
  35. printf("%d ", queue[i]);
  36. i = (i + 1) % QUEUE_SIZE;
  37. }
  38. printf("\n");
  39. }
  40.  
  41. int main() {
  42.  
  43. enQueue(1);
  44. enQueue(2);
  45. enQueue(3);
  46. printQueue();
  47. deQueue();
  48. deQueue();
  49. deQueue();
  50. printf("deQueue: %d\n", deQueue());
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
enQueue() front = 0 rear = 0
enQueue() front = 0 rear = 1
enQueue() front = 0 rear = 2
printQueue: 1 2 3 
deQueue() front = 0 rear = 3
deQueue: 1
deQueue() front = 1 rear = 3
deQueue: 2
deQueue() front = 2 rear = 3
deQueue: 3
deQueue() front = 3 rear = 3
deQueue() queue empty
deQueue: -1