Advertisement
thinhckhcmus

stack_linklist

May 9th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. typedef int item;
  5. struct Node// tao node
  6. {
  7. item Data;
  8. Node *next;
  9. };
  10. struct stack
  11. {
  12. Node *top;
  13. };
  14. void taostack(stack &s);
  15. bool ktstackRong(stack s);
  16. int dodaistack(stack s);
  17. void pushstack(stack &s, item &x);
  18. int peekstack(stack s);
  19. void input(stack &s);
  20. void output(stack s);
  21. Node *CreateNode(item x);
  22. void taostack(stack &s)// tao stack
  23. {
  24. s.top = NULL;
  25. }
  26. bool ktstackRong(stack s) // kiem tra stack co rong hay khong ?
  27. {
  28. if (s.top == NULL)
  29. return true;
  30. else
  31. return false;
  32. }
  33. int dodaistack(stack s) // kiemtra do dai cua stack
  34. {
  35. Node *p = s.top;
  36. int l = 0;
  37. while (p!=NULL)// trong khi chua het stack thi van duyet
  38. {
  39. l++;
  40. p = p->next;
  41. }
  42. return l;
  43. }
  44. Node *CreateNode(item x)// tao node
  45. {
  46. Node *p = new Node;
  47. if (p == NULL)
  48. {
  49. return p;
  50. }
  51. else
  52. {
  53. p->Data = x;
  54. p->next = NULL;
  55. }
  56. }
  57. void pushstack(stack &s, item &x)// them phan tu dau vao stack
  58. {
  59. Node *p = CreateNode(x);
  60. p->next = s.top;
  61. s.top = p;
  62. }
  63. int peekstack(stack s)// lay phan tu dau nhung khong xoa
  64. {
  65. return s.top->Data;
  66. }
  67. int popstack(stack &s)// lay phan tu dau roi xoa
  68. {
  69. if (!ktstackRong(s))
  70. {
  71. item x = s.top->Data;// luu lai gia tri
  72. s.top = s.top->next;//xoa phan tu top
  73. return x;
  74. }
  75. }
  76. void input(stack &s)//nhap
  77. {
  78. int i = 0;
  79. item x;
  80. cout << "***NHAP PHAN TU,NHAP 0 DE KET THUC\n";
  81. do
  82. {
  83. i++;
  84. cout << "nhap phan tu thu " << i << ": ";
  85. cin >> x;
  86. if (x != 0)
  87. {
  88. pushstack(s, x);
  89. }
  90. } while (x != 0);//nhap 0 de ket thuc
  91. }
  92. void output(stack s)
  93. {
  94. Node *p = s.top;
  95. while (p != NULL)
  96. {
  97. cout << " " << p->Data;
  98. p = p->next;
  99. }
  100. cout << "\n";
  101. }
  102. int main()
  103. {
  104. stack s;
  105. taostack(s);
  106. input(s);
  107. output(s);
  108. int Lua_chon;
  109. cout << "Moi ban cho va xu li stack voi DS LKD:";
  110. cout << "\nNhan 1: Kiem Tra Stack Rong";
  111. cout << "\nNhan 2: Do Dai Stack";
  112. cout << "\nNhan 3: Them Phan Tu Vao Dau Stack";
  113. cout << "\nNhan 4: Xoa Phan Tu Trong Stack";
  114. cout << "\nNhan 5: Xuat Stack";
  115. cout << "\nNhan 6: De Thoat";
  116. do
  117. {
  118. cout << "\nBan Chon: ";
  119. cin >> Lua_chon;
  120. switch (Lua_chon)
  121. {
  122. case 1:
  123. {
  124. if (ktstackRong(s))
  125. cout << "stack rong";
  126. else
  127. cout << "stack khong rong";
  128. break;
  129. }
  130. case 2:
  131. {
  132. cout << "do dai stack la: " << dodaistack(s);
  133. break;
  134. }
  135. case 3:
  136. {
  137. item x;
  138. cout << "nhap phan tu can chen vo DS: ";
  139. cin >> x;
  140. pushstack(s, x);
  141. break;
  142. }
  143. case 4:
  144. {
  145. popstack(s);
  146. break;
  147. }
  148. case 5:
  149. {
  150. output(s);
  151. break;
  152.  
  153. }
  154. case 6:
  155. {
  156. break;
  157. }
  158. }
  159. } while (Lua_chon != 6);
  160. return 0;
  161. system("pause");
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement