diff --git a/include/stack.h b/include/stack.h index 65ca043..93e9de3 100644 --- a/include/stack.h +++ b/include/stack.h @@ -5,6 +5,7 @@ #include #include #include +#include #define DEFAULT_STACK_SIZE 4 @@ -71,6 +72,7 @@ StackErr Stack::push(T value) { delete[] this->data; this->data = tmp; + this->cap = new_capacity; } this->data[this->len] = value; @@ -104,6 +106,7 @@ std::expected Stack::pop() { delete[] this->data; this->data = tmp; + this->cap = new_capacity; } return std::expected(return_val); @@ -119,4 +122,24 @@ std::expected Stack::peek() { return std::expected(this->data[this->len - 1]); } +template +requires std::formattable +void Stack::print() { + std::println("Stack:"); + std::println("Length: {}.", this->len); + std::println("Capacity: {}.", this->cap); + + std::println("{:^20}", "Datos"); + std::println("{:^20}", "|"); + std::println("{:^20}", "v"); + + for (int i = 0; i < this->cap; i++) { + if (i < this->len) { + std::println("{:^20}", this->data[i]); + } else { + std::println("{:^20}", "NULL"); + } + } +} + #endif // !ST