generated from AfonsoCMSousa/CPP-Template
49 lines
712 B
C++
49 lines
712 B
C++
#include "stack.h"
|
|
#include <cstdio>
|
|
|
|
Stack::Stack(size_t size) {
|
|
capacity = size;
|
|
data = new api_packet[capacity];
|
|
top = -1;
|
|
}
|
|
|
|
Stack::~Stack() {
|
|
delete[] data;
|
|
}
|
|
|
|
bool Stack::isEmpty() {
|
|
return top == -1;
|
|
}
|
|
|
|
bool Stack::isFull() {
|
|
return top == capacity - 1;
|
|
}
|
|
|
|
bool Stack::push(const api_packet &item) {
|
|
if (isFull()) {
|
|
return false; // Stack overflow
|
|
}
|
|
data[++top] = item;
|
|
return true;
|
|
}
|
|
|
|
bool Stack::pop(api_packet &item) {
|
|
if (isEmpty()) {
|
|
return false; // Stack underflow
|
|
}
|
|
item = data[top--];
|
|
return true;
|
|
}
|
|
|
|
bool Stack::peek(api_packet &item) {
|
|
if (isEmpty()) {
|
|
return false; // Stack is empty
|
|
}
|
|
item = data[top];
|
|
return true;
|
|
}
|
|
|
|
size_t Stack::size() {
|
|
return top + 1;
|
|
}
|