fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 5
  4. int queue[SIZE];
  5. int head, tail;
  6.  
  7. void enqueue(int value);
  8. int dequeue(void);
  9.  
  10. int main(void)
  11. {
  12. head=tail=0;
  13. int resp,data, i;
  14.  
  15. while(1){
  16. printf("1:enqueue 2:dequeue 0:end : ");scanf("%d",&resp);
  17.  
  18. if(!resp) break;
  19.  
  20. switch(resp){
  21. case 1: printf("enqueue: "); scanf("%d",&data);
  22. enqueue(data);
  23. break;
  24. case 2: dequeue();
  25. break;
  26. }
  27. printf("head=%d, tail=%d\n",head,tail);
  28. }
  29. printf("\n");
  30. i=head;
  31. while(i!=tail){
  32. printf("queue[%d]=%d\n",i,queue[i]);
  33. i++;
  34. i=i%SIZE;
  35. }
  36. return 0;
  37. }
  38.  
  39. void enqueue(int value)
  40. {
  41. if(head==(tail+1)%SIZE){
  42. printf("キューは満杯で入りませんでした\n");
  43. }else{
  44. queue[tail++]=value;
  45. }
  46. tail=tail%SIZE;
  47. }
  48.  
  49. int dequeue(void)
  50. {
  51. int value;
  52. if(head==tail){
  53. printf("キューは空で取り出せませんでした\n");
  54. return 0;
  55. }else{
  56. value=queue[head++];
  57. }
  58. head=head%SIZE;
  59. return value;
  60. }
  61.  
  62. // your code goes here
  63.  
  64.  
Success #stdin #stdout 0s 5308KB
stdin
1
2
3
0
stdout
1:enqueue 2:dequeue 0:end : enqueue: head=0, tail=1
1:enqueue 2:dequeue 0:end : head=0, tail=1
1:enqueue 2:dequeue 0:end : 
queue[0]=2