Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. struct Queue
  4. {
  5. signed long long * data;
  6. int cap;
  7. int count;
  8. int head;
  9. int tail;
  10. };
  11. void InitQueue(struct Queue * q, int size)
  12. {
  13. q->data = malloc(sizeof(signed long long)*size);
  14. q->cap = 4;
  15. q->count = 0;
  16. q->head = 0;
  17. q->tail = 0;
  18. }
  19. void QueueEmpty(struct Queue * q)
  20. {
  21. if(q->count == 0)
  22. {
  23. printf("true\n");
  24. }
  25. else
  26. {
  27. printf("false\n");
  28. }
  29. }
  30. void Enqueue(struct Queue * q, signed long long x)
  31. {
  32. int i;
  33. if(q->count == q->cap)
  34. {
  35. q->cap *= 2;
  36. for(i = 1; i <= q->cap/2-q->head; i++)
  37. {
  38. q->data[q->cap-i] = q->data[q->cap/2-i];
  39. }
  40. q->head += q->cap/2;
  41. q->data[q->tail] = x;
  42. q->tail += 1;
  43. q->count += 1;
  44. }
  45. else
  46. {
  47. q->data[q->tail] = x;
  48. q->tail += 1;
  49. q->count += 1;
  50. if(q->tail == q->cap) { q->tail = 0; }
  51. }
  52.  
  53.  
  54. }
  55.  
  56. void Dequeue(struct Queue * q)
  57. {
  58. printf("%lld\n", q->data[q->head]);
  59. q->head += 1;
  60. if(q->head == q->cap){ q->head = 0; }
  61. q->count -= 1;
  62. }
  63.  
  64. int main()
  65. {
  66. struct Queue q;
  67. int n, i;
  68. signed long long x;
  69. char str[6];
  70. InitQueue(&q, 100000);
  71. scanf("%d", &n);
  72. for(i = 0; i < n; i++)
  73. {
  74. scanf("%s", str);
  75. if( strcmp(str, "EMPTY") == 0 )
  76. {
  77. QueueEmpty(&q);
  78. continue;
  79. }
  80. if( strcmp(str, "ENQ") == 0 )
  81. {
  82. scanf("%lld", &x);
  83. Enqueue(&q, x);
  84. continue;
  85. }
  86. if( strcmp(str, "DEQ") == 0 )
  87. {
  88. Dequeue(&q);
  89. continue;
  90. }
  91. }
  92. free(q.data);
  93. return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement