fork download
  1. #include <iostream>
  2.  
  3. template <class T>
  4. class Stack_Class{
  5. public:
  6. T* stack;
  7. int item_quantity;
  8. T* First_item;
  9. int Max_quantity;
  10.  
  11. Stack_Class(int value);
  12. ~Stack_Class();
  13. bool Add(T value);
  14. T Pop();
  15. int GetMax_Quantity();
  16. bool Full();
  17. bool Empty();
  18. };
  19.  
  20.  
  21. template <class T>
  22. Stack_Class<T>::Stack_Class(int value){
  23. if (value > 0){
  24. stack = new T[value];
  25. First_item = stack;
  26. item_quantity = 0;
  27. Max_quantity = value;
  28. }
  29. }
  30.  
  31. template <class T>
  32. Stack_Class<T>::~Stack_Class(){
  33. if (First_item){
  34. delete First_item;
  35. }
  36. }
  37.  
  38.  
  39.  
  40. template<class T>
  41. bool Stack_Class<T>::Add(T num){
  42. if (item_quantity <Max_quantity){
  43.  
  44. stack[item_quantity++] = num;
  45. return true;
  46. }
  47. else return false;
  48. }
  49.  
  50. template<class T>
  51. T Stack_Class<T>::Pop(){
  52. if (!Empty()){
  53. item_quantity--;
  54. return stack[item_quantity];
  55. }
  56. return 0;
  57. }
  58.  
  59. template<class T>
  60. bool Stack_Class<T>::Empty(){
  61. return (item_quantity == 0);
  62. }
  63.  
  64. template <class T>
  65. int Stack_Class<T>::GetMax_Quantity(){
  66. return Max_quantity;
  67. }
  68.  
  69. int main(){
  70. Stack_Class<int> intStack(3);
  71.  
  72. intStack.Add(1);
  73. intStack.Add(2);
  74. intStack.Add(3);
  75. int count = intStack.GetMax_Quantity();
  76.  
  77. for (int i = 0; i < count; i++){
  78. std::cout << "Pop No: " << i << " - Elemento: " << intStack.Pop() << std::endl;
  79. }
  80. return 0;
  81. }
  82.  
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
Pop No: 0 - Elemento: 3
Pop No: 1 - Elemento: 2
Pop No: 2 - Elemento: 1