fork download
  1. #include <stdio.h>
  2. #define SIZE 5
  3.  
  4. int queue[SIZE];
  5. int head, tail;
  6.  
  7. void enqueue(int value);
  8. int dequeue(void);
  9.  
  10.  
  11. int main(void) {
  12. head = tail = 0;
  13. int data, i;
  14. enqueue(1);
  15. enqueue(2);
  16. dequeue();
  17. enqueue(3);
  18. dequeue();
  19. enqueue(4);
  20. enqueue(5);
  21. dequeue();
  22. enqueue(6);
  23. for (i = 0; i < SIZE; i++) {
  24. printf("queue[%d]=%d\n", i, queue[i]);
  25. }
  26. return 0;
  27. }
  28.  
  29. void enqueue(int value) {
  30. if((tail+1)%SIZE==head){
  31. printf("キューは満杯だよ\n");
  32. }
  33. else{
  34. queue[tail]=value;//新しい場所を格納
  35. tail=(tail+1)%SIZE;//tailを次の場所に進める
  36. }
  37. }
  38.  
  39. int dequeue(void) {
  40. if(head==tail){
  41. printf("空っぽだよ\n");
  42. return -1; //エラーだから-1を返してあげる
  43. }
  44. else{
  45. int value;
  46. value=queue[head];//headから数値を取り出し、保存する
  47. queue[head]=0; //抽出した場所を0で初期化
  48. head=(head+1)%SIZE; //headを次に進める
  49. return value;
  50. }
  51. }
  52.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
queue[0]=6
queue[1]=0
queue[2]=0
queue[3]=4
queue[4]=5