Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<vector>
- #include<memory>
- struct data;
- typedef std::shared_ptr<data> dt;
- class stack {
- public:
- void push_front(dt dejta)
- {
- last = dejta;
- if (stosik[0] == 0) stosik.clear(); // nie wiem czy jest sens inicjalizacji wektora przez jedno 0 a potem
- stosik.push_back(dejta); stackSize++; // usuwanie jego zawartosci i wprowadzenie nowego elementu. Moze lepiej
- } // zrobic przy funkcji pop, ze jak element jest zerowy(ten zainicjalizowany)
- //to informuje "stack is empty"
- void pop()
- {
- if (stosik.size() > 1)
- {
- stosik.pop_back();
- last = stosik.back();
- stackSize--;
- }
- else if(stosik.size() == 1)
- {
- stosik.pop_back();
- last = nullptr;
- stackSize--;
- }
- else
- {
- std::cout << "The stack is empty !" << std::endl;
- }
- }
- int size()
- {
- return stackSize;
- }
- dt getLast()
- {
- return last;
- }
- private:
- dt last, dataa;
- int stackSize = 0;
- std::vector<dt> stosik = { 0 };
- };
- struct data {
- std::string name, surename;
- bool isAlcoholic;
- data(std::string name, std::string surename, bool isAlcoholic)
- {
- this->name = name;
- this->surename = surename;
- this->isAlcoholic = isAlcoholic;
- }
- };
- int main()
- {
- dt d1 = std::make_shared<data>("Dominik", "Rusak", true);
- dt d2 = std::make_shared<data>("Leszek", "Szajnowski", true);
- dt d3 = std::make_shared<data>("Patryk", "Sztyglic", false);
- stack staczek;
- staczek.push_front(d1);
- staczek.size();
- staczek.push_front(d2);
- staczek.size();
- staczek.push_front(d3);
- staczek.size();
- staczek.pop();
- staczek.size();
- staczek.pop();
- staczek.size();
- staczek.pop();
- staczek.size();
- staczek.pop();
- staczek.size();
- int bla;
- std::cin >> bla;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement