fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define QUEUE_SIZE 10
  5.  
  6. typedef struct {
  7. int data[QUEUE_SIZE];
  8. int number;
  9. int head;
  10. } QUEUE;
  11.  
  12. QUEUE* create_queue() {
  13. QUEUE* queue = (QUEUE*)malloc(sizeof(QUEUE));
  14.  
  15. queue->head = 0;
  16. queue->number = 0;
  17. return queue;
  18. }
  19.  
  20. int enqueue(QUEUE* queue, int value) {
  21. if (queue->head + queue->number < QUEUE_SIZE){
  22. queue->data[queue->head + queue->number] = value;
  23. queue->number++;
  24. return 0;
  25. } else {
  26. return -1;
  27. }
  28. }
  29.  
  30. int dequeue(QUEUE* queue) {
  31. int r;
  32. if (queue->number > 0) {
  33. r = queue->data[queue->head];
  34. queue->head++;
  35. queue->number--;
  36. } else {
  37. r = -1;
  38. }
  39. return r;
  40. }
  41.  
  42. int main() {
  43. QUEUE *q = create_queue();
  44. enqueue(q, 3);
  45. enqueue(q, 2);
  46. enqueue(q, 1);
  47. printf(":%d\n", dequeue(q));
  48. printf(":%d\n", dequeue(q));
  49. enqueue(q, 5);
  50. enqueue(q, 4);
  51. printf(":%d\n", dequeue(q));
  52. printf(":%d\n", dequeue(q));
  53. printf(":%d\n", dequeue(q));
  54. printf(":%d\n", dequeue(q));
  55. free(q);
  56. return 0;
  57. }
  58. /* end */
  59.  
  60.  
Success #stdin #stdout 0s 4420KB
stdin
Standard input is empty
stdout
:3
:2
:1
:5
:4
:-1