Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Stack
- {
- private:
- int size;
- float* array;
- public:
- Stack();
- ~Stack();
- void push_back(float value);
- void pop_back();
- bool is_empty() { return !size; };
- float top_value() { if (size > 0) { return array[size - 1]; } else { std::cout << "Error. The stack is empty." << std::endl; return 0; } };
- void print_stack();
- };
- Stack::Stack() {
- array = new float[0];
- size = 0;
- }
- Stack::~Stack() {
- while (size) {
- pop_back();
- }
- }
- void Stack::push_back(float value) {
- size++;
- float* tmp = new float[size];
- for (int i = 0; i < size - 1; i++) {
- tmp[i] = array[i];
- }
- tmp[size - 1] = value;
- delete[] array;
- array = tmp;
- }
- void Stack::pop_back() {
- if (size > 0) {
- size--;
- float* tmp = new float[size];
- for (int i = 0; i < size; i++) {
- tmp[i] = array[i];
- }
- delete[] array;
- array = tmp;
- }
- }
- void Stack::print_stack() {
- for (int i = 0; i < size; i++) {
- std::cout << array[i] << " ";
- }
- std::cout << std::endl;
- }
- int main()
- {
- Stack st;
- st.push_back(1);
- st.push_back(2);
- st.push_back(3);
- std::cout << st.top_value() << std::endl;
- st.pop_back();
- st.print_stack();
- std::cout << st.is_empty() << std::endl;
- st.pop_back();
- st.pop_back();
- std::cout << st.is_empty() << std::endl;
- st.pop_back();
- std::cout << st.top_value() << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement