Advertisement
thinhckhcmus

queue_linklist

May 14th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. typedef int item;// kieu du lieu
  5. struct Node
  6. {
  7. item Data;
  8. Node *next;
  9. };
  10. struct Queue// tao hang cho
  11. {
  12. Node *dau, *cuoi;// Node dau va node cuoi
  13. int count;// dem so phan tu
  14. };
  15. void taoQueue(Queue &q);
  16. bool ktQueueRong(Queue q);
  17. Node *CreateNode(item x);
  18. void pushQueue(Queue &q, item x);
  19. int popQueue(Queue &q);
  20. void input(Queue &q);
  21. void output(Queue q);
  22.  
  23. void taoQueue(Queue &q)// tao queue
  24. {
  25. q.dau = q.cuoi = NULL;
  26. q.count = 0;
  27. }
  28. bool ktQueueRong(Queue q)
  29. {
  30. if (q.count == 0)// so phan tu =0 -> rong
  31. return true;
  32. else
  33. return false;
  34. }
  35. Node *CreateNode(item x)
  36. {
  37. Node *p = new Node;
  38. if (p == NULL)
  39. {
  40. return NULL;
  41. }
  42. else
  43. {
  44. p->Data = x;
  45. p->next = NULL;
  46. }
  47. return p;
  48. }
  49. void pushQueue(Queue &q, item x)// them phan tu vao cuoi queue
  50. {
  51. Node *p = CreateNode(x);
  52. if (ktQueueRong(q))
  53. {
  54. q.dau = q.cuoi = p;// dau va cuoi deu tro den p
  55. }
  56. else// khong rong
  57. {
  58. q.cuoi->next = p;
  59. q.cuoi = p;
  60. }
  61. q.count++;
  62. }
  63. int popQueue(Queue &q)// loai bo phan tu dau khoi hang doi
  64. {
  65. if (ktQueueRong(q))
  66. {
  67. cout << "hang doi rong";
  68. return 0;
  69. }
  70. else
  71. {
  72. item x = q.dau->Data;
  73. if (q.count == 1)// neu co 1 phan tu
  74. taoQueue(q);
  75. else
  76. q.dau = q.dau->next;
  77. q.count--;
  78. return x;// tra ve phan tu lay ra
  79. }
  80. }
  81. void input(Queue &q)
  82. {
  83. int i = 0;
  84. item x;
  85. cout << "NHAP PHAN TU HANG CHO, NHAP 0 DE KET THUC";
  86. do
  87. {
  88. i++;
  89. cout << "\nnhap phan tu thu " << i << ": ";
  90. cin >> x;
  91. if (x != 0)
  92. pushQueue(q, x);
  93. } while (x != 0);// nhap khong de ket thuc
  94. }
  95. void output(Queue q)
  96. {
  97. Node *p = q.dau;
  98. while (p != NULL)
  99. {
  100. cout << " " << p->Data;
  101. p = p->next;
  102. }
  103. cout << "\n";
  104. }
  105. int main()
  106. {
  107. Queue q;
  108. taoQueue(q);
  109. input(q);
  110. output(q);
  111. int lua_chon;
  112. cout << "Moi Ban Chon Phep Toan Voi DS LKD";
  113. cout << "\n1: Kiem Tra Queue Rong";
  114. cout << "\n2: Them Phan Tu Vao Queue";
  115. cout << "\n3: Xoa Phan Tu Trong Queue";
  116. cout << "\n4: Xuat Queue";
  117. cout << "\n5: Thoat";
  118. do
  119. {
  120. cout << "\nBan Chon: ";
  121. cin >> lua_chon;
  122. switch (lua_chon)
  123. {
  124. case 1:
  125. {
  126. if (ktQueueRong(q))
  127. cout << "Queue rong";
  128. else
  129. cout << "Queue Khong Rong";
  130. break;
  131. }
  132. case 2:
  133. {
  134. item x;
  135. cout << "nhap phan tu can chen vao Queue: ";
  136. cin >> x;
  137. pushQueue(q, x);
  138. break;
  139. }
  140. case 3:
  141. {
  142. popQueue(q);
  143. break;
  144. }
  145. case 4:
  146. {
  147. output(q);
  148. break;
  149. }
  150. case 5:
  151. {
  152. break;
  153. }
  154. }
  155. } while (lua_chon != 5);
  156. return 0;
  157. system("pause");
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement