Advertisement
thinhckhcmus

queue_mang

May 9th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. #define MAX 100 // so phan tu toi da cua queue la 5
  5. typedef int item;// kieu du lieu
  6. struct Queue
  7. {
  8. int dau, cuoi;//phan tu dau va cuoi cua queue
  9. item Data[MAX];// mang cac phan tu
  10. int count;// dem so phan tu queue
  11. };
  12. void taoQueue(Queue &q);
  13. bool ktQueueRong(Queue q);
  14. bool ktQueueMax(Queue q);
  15. void pushQueue(Queue &q, item x);
  16. int popQueue(Queue &q);
  17. item qdau(Queue q);
  18. void push_cuoihangdoivong(Queue &q, item x);
  19. int pop_cuoihangdoivong(Queue &q);
  20. void input(Queue &q);
  21. void output(Queue q);
  22. void taoQueue(Queue &q)// tao hang cho
  23. {
  24. q.dau = 0;// phan tu dau
  25. q.cuoi = -1;// phan tu cuoi la -1 ( khong co phan tu trong q)
  26. q.count = 0;// so phan tu bang 0
  27. }
  28. bool ktQueueRong(Queue q)// kiem tra hang cho co rong hay khong
  29. {
  30. if (q.count == 0)
  31. return true;
  32. else
  33. return false;
  34. }
  35. bool ktQueueMax(Queue q)// kiem tra hang cho da du hay chua ?
  36. {
  37. if (q.count == MAX)
  38. return true;
  39. else
  40. return false;
  41. }
  42. void pushQueue(Queue &q, item x)// them phan tu vao cuoi hang cho
  43. {
  44. if (ktQueueMax(q))
  45. cout << "hang cho da day";
  46. else
  47. {
  48. q.Data[++q.cuoi] = x;// tang phan tu o cuoi len va gan vao x
  49. q.count++; // tang so phan tu len
  50. }
  51. }
  52. int popQueue(Queue &q)// loai bo phan tu dau hang cho
  53. {
  54. if (ktQueueRong(q))
  55. cout << "hang cho rong !";
  56. else
  57. {
  58. item x = q.Data[q.dau];
  59. for (int i = q.dau; i < q.cuoi; i++)// di chuyen cac phan tu ve dau hang
  60. q.Data[i] = q.Data[i + 1];
  61. q.cuoi--;// giam vi tri phan tu cuoi xuong
  62. q.count--;// giam so phan tu xuong
  63. return x;// tra ve phan tu lay ra
  64. }
  65. }
  66. item qdau(Queue q)// xem thong tin dau hang cho
  67. {
  68. if (ktQueueRong(q))
  69. cout << "hang cho rong";
  70. else
  71. return
  72. q.Data[q.dau];
  73.  
  74. }
  75. void push_cuoihangdoivong(Queue &q, item x)// them phan tu vao cuoi hang doi vong
  76. {
  77. if (ktQueueMax(q))
  78. cout << "hang doi day";
  79. else
  80. {
  81. q.Data[(++q.cuoi) % MAX] = x;
  82. // tang phan tu cuoi len va gan phan tu x vao, neu phan tu cuoi dang o vi tri MAX-1 thi tang ve vi tri 0
  83. q.count++;// tang so phan tu len;
  84. }
  85. }
  86. int pop_cuoihangdoivong(Queue &q)// loai bo phan tu dau hang doi vong
  87. {
  88. if (ktQueueRong(q))
  89. cout << "hang doi rong";
  90. item x = q.Data[q.dau];
  91. q.dau = (q.dau++) % MAX;//tang vi tri phan dau tien len , neu dang o MAX -1 thi ve 0
  92. q.count--;//giam phan tu xuong
  93. return x;// tra ve phan tu lay ra
  94. }
  95. void input(Queue &q)// nhap hang doi
  96. {
  97. int n;
  98. item x;
  99. do
  100. {
  101. cout << "nhap phan tu cua Queue: ";
  102. cin >> n;
  103. } while (n > MAX || n < 1);
  104. for (int i = 0; i < n; i++)
  105. {
  106. cout << "nhap phan tu thu " << i + 1 << ": ";
  107. cin >> x;
  108. pushQueue(q, x);
  109. push_cuoihangdoivong(q, x);// hang vong
  110. }
  111. }
  112. void output(Queue q)// xuat hang cho
  113. {
  114. if (ktQueueRong(q))
  115. cout << "hang cho rong";
  116. else
  117. {
  118. for (int i = q.dau; i <= q.cuoi; i++)
  119. //for (int i=q.dau,j=0;j<q.count;j++;i=(i++)
  120. {
  121. cout << " " << q.Data[i];
  122. cout << "\n";
  123. }
  124. }
  125. }
  126. int main()
  127. {
  128. Queue q;
  129. taoQueue(q);
  130. input(q);
  131. output(q);
  132. int lua_chon;
  133. cout<<"Moi ban chon phep toan voi DS LKD:";
  134. cout<<"\n1: Kiem tra Queue rong";
  135. cout<<"\n2: Kiem tra Queue day";
  136. cout<<"\n3: Them phan tu vao Queue";
  137. cout<<"\n4: Xoa phan tu trong Queue";
  138. cout<<"\n5: Xuat Queue";
  139. cout<<"\n6: Thoat";
  140. do
  141. {
  142. cout << "\nBan Chon: ";
  143. cin >> lua_chon;
  144. switch (lua_chon)
  145. {
  146. case 1:
  147. {
  148. if (ktQueueRong(q))
  149. cout << "hang cho rong\n";
  150. else
  151. cout << "hang cho khong rong\n";
  152. break;
  153. }
  154. case 2:
  155. {
  156. if (ktQueueMax(q))
  157. cout << "hang cho da day\n";
  158. else
  159. cout << "hang cho chua day\n";
  160. break;
  161. }
  162. case 3:
  163. {
  164. item x;
  165. cout << "nhap phan tu can chen vao hang cho: ";
  166. cin >> x;
  167. pushQueue(q, x);
  168. //push_cuoihangdoivong(q, x);
  169. break;
  170. }
  171. case 4:
  172. {
  173. popQueue(q);
  174. //pop_cuoihangdoivong(q,x);
  175. break;
  176. }
  177. case 5:
  178. {
  179. output(q);
  180. break;
  181. }
  182. case 6:
  183. {
  184. break;
  185. }
  186. }
  187. } while (lua_chon != 6);
  188. return 0;
  189. system("pause");
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement