Advertisement
thinhckhcmus

stack_Mang

May 9th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. #define MAX 100 // phan tu trong stack toi da la 100
  5. typedef int item;// kieu du lieu cua stack
  6. struct stack
  7. {
  8. int top; // dinh top
  9. item Data[MAX];// mang cac phan tu
  10. };
  11. void taostack(stack &s); //khoi tao Stack rong
  12. bool ktstackRong(stack s); //kiem tra Stack rong
  13. bool ktstackMax(stack s); //kiem tra Stack day
  14. void pushstack(stack &s, item x); //them phan tu vao Stack
  15. int peekstack(stack s); //Lay phan tu o dau Stack nhung khong xoa
  16. int popstack(stack &s); //Loai bo phan tu khoi Stack
  17. void input(stack &s); //Nhap Stack
  18. void output(stack s); //Xuat Stack
  19. void taostack(stack &s)// khoi tao danh sach rong
  20. {
  21. s.top = 0;
  22. }
  23. bool ktstackRong (stack s)// kiem tra stack co rong hay khong ?
  24. {
  25. if (s.top == 0)
  26. return true;
  27. else
  28. return false;
  29. }
  30. bool ktstackMax(stack s)// kiem tra stack co day hay khongg ?
  31. {
  32. if (s.top == MAX)
  33. return true;
  34. else
  35. return false;
  36. }
  37. void pushstack(stack &s, item x)// them phan tu vao dau stack
  38. {
  39. if (!ktstackMax(s))
  40. {
  41. s.Data[s.top] = x;// gan du lieu;
  42. s.top++;// top se tang len 1
  43. }
  44. }
  45. int peekstack(stack s)// lay phan tu cua gia tri dau trong stack nhung khong xoa
  46. {
  47. return s.Data[s.top-1];
  48. }
  49. int popstack(stack &s)// lay phan tu cua gia tri dau trong stack va xoa
  50. {
  51. if (!ktstackRong(s))
  52. {
  53. s.top--;
  54. return s.Data[s.top];// update lai du lieu khi sau khi xoa phan tu
  55. }
  56. }
  57. void input(stack &s)// nhap
  58. {
  59. int n;
  60. item x;
  61. do
  62. {
  63. cout << "nhap so phan tu cua stack: ";
  64. cin >> n;
  65. } while (n > MAX || n < 1);
  66. for (int i=0; i < n; i++)
  67. {
  68. cout << "nhap phan tu thu " <<i+1 << ": ";
  69. cin >> x;
  70. pushstack(s, x);// them vao dau stack
  71.  
  72. }
  73. }
  74. void output(stack s)//xuat
  75. {
  76. for (int i = s.top - 1; i >= 0; i--)
  77. {
  78. cout << " " << s.Data[i];
  79. cout << "\n";
  80. }
  81. }
  82. int main()
  83. {
  84. stack s;
  85. taostack(s);
  86. input(s);
  87. output(s);
  88.  
  89. int lua_chon;
  90. cout<<"Moi ban chon phep toan voi DS LKD: ";
  91. cout<<"\n1: Kiem tra Stack rong";
  92. cout<<"\n2: Kiem tra Stack day";
  93. cout<<"\n3: Them phan tu vao Stack";
  94. cout<<"\n4: Xoa phan tu trong Stack";
  95. cout<<"\n5: Xuat Stack";
  96. cout<<"\n6: Thoat";
  97. do
  98. {
  99. cout<<"\nBan chon: ";
  100. cin >> lua_chon;
  101. switch (lua_chon)
  102. {
  103. case 1:
  104. {
  105. if (ktstackRong(s)) cout<<"Stack rong !";
  106. else cout<<"Stack khong rong !";
  107. break;
  108. }
  109. case 2:
  110. {
  111. if (ktstackMax(s)) cout<<"Stack day !";
  112. else cout<<"Stack chua day !";
  113. break;
  114. }
  115. case 3:
  116. {
  117. item x;
  118. cout<<"Nhap phan tu can chen vao DS: ";
  119. cin >> x;
  120. pushstack(s, x);
  121. break;
  122. }
  123. case 4:
  124. {
  125. popstack(s);
  126. break;
  127. }
  128. case 5:
  129. {
  130. output(s);
  131. break;
  132. }
  133. case 6: break;
  134. }
  135. } while (lua_chon != 6);
  136. return 0;
  137. system("pause");
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement