Advertisement
MagnusArias

PO1 | Stos

Nov 12th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. Kompilacja na UBUNTU
  2. g++ -g -Wall -pedantic -Werror stack.h stack.c main.c -o Stack_CPP
  3. valgrind ./Stack_CPP
  4.  
  5. // --------------------------- STACK.H --------------------------- //
  6.  
  7.  class Stack {
  8.         private:
  9.                 int top;
  10.                 int *dane;
  11.                 int size;
  12.                
  13.         public:
  14.                 Stack();
  15.                
  16.                 // pozostałe metody
  17.                 void Push(int element);
  18.                 int Pop();
  19.                 void Clear();
  20.                 bool isEmpty();
  21.                 int return_size();
  22.                 ~Stack(); // destruktor
  23. };
  24.        
  25.  
  26.  
  27.  
  28. // --------------------------- STACK.CPP --------------------------- //
  29.  
  30. #include <stdlib.h>
  31. #include <iostream>
  32. #include <assert.h>
  33. #include "stack.h"
  34. using namespace std;
  35.  
  36. void Stack::Push(int element)
  37. {
  38.     if (size == top)
  39.       dane = (int*) realloc( dane, sizeof(int) * (size+=1) );
  40.      
  41.     assert(top < size);
  42.     dane[top++] = element;
  43. }
  44.  
  45. bool Stack::isEmpty()
  46. {
  47.     return top == 0 ? true : false;
  48. }
  49.  
  50. int Stack::Pop()
  51. {
  52.    
  53.    
  54.     if (isEmpty() == false){
  55.       assert( top > 0 );
  56.       return dane[--top];
  57.     }
  58.     else{
  59.       cout << "stos pusty" << endl;
  60.       return 0;
  61.     }
  62. }
  63.                
  64. void Stack::Clear()
  65. {
  66.     top = 0;
  67. }
  68.  
  69. Stack::Stack()
  70. {
  71.     top = 0;
  72.     size = 1;
  73.     dane = (int*) malloc( sizeof(int) * size );
  74. }
  75.  
  76.  
  77.  
  78. int Stack::return_size()
  79. {
  80.     return size;
  81. }
  82.  
  83. Stack::~Stack()
  84. {
  85.     free(dane);
  86. }
  87.  
  88.  
  89.  
  90.  
  91.  
  92. // --------------------------- MAIN.CPP --------------------------- //
  93.  
  94. #include <iostream>
  95. #include "stack.h"
  96. using namespace std;
  97.  
  98. int main()
  99. {
  100.         Stack Stosik; // inicjalizacja stosu, uruchamia się konstruktor i zapełnia pola ( --> stack.cpp)
  101.  
  102.        
  103.         for (int i = 0; i < 15; i++)
  104.                 Stosik.Push(4*i); // umieszczenie jakichś danych na stosie
  105.        
  106.                
  107.         cout << endl;
  108.         for (; Stosik.isEmpty() == 0;)
  109.     {
  110.         cout << " | " << Stosik.Pop() << endl; // wyświetlenie danych
  111.      
  112.     }
  113.     Stosik.Pop();
  114.            
  115.                
  116.         return 0;
  117.          
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement