adding stack implementation

This commit is contained in:
Jidong Xiao
2025-02-24 23:03:13 -05:00
committed by JamesFlare
parent b26d858b72
commit b724fb5a78
3 changed files with 73 additions and 0 deletions

View File

@@ -203,6 +203,10 @@ int main() {
You can compile and run this above [program](stack.cpp).
### 14.1.3 Stack Implementation
We have the stack implementation and test code here: [stack.h](stack.h), [stack_test.cpp](stack_test.cpp).
## 14.2 Additional STL Container Classes: Queues
- A queue is a linear data structure that follows the First-In-First-Out (FIFO) principle.

View File

@@ -0,0 +1,43 @@
#include <iostream>
#include <vector>
template <class T>
class Stack {
private:
std::vector<T> data; // Vector to store the stack elements
public:
// Push element onto the stack
void push(const T& value) {
data.push_back(value);
}
// Pop element from the stack
void pop() {
if (!empty()) {
data.pop_back();
} else {
std::cout << "Stack is empty, cannot pop!" << std::endl;
}
}
// Get the top element of the stack
int top() {
if (!empty()) {
return data.back();
} else {
std::cout << "Stack is empty!" << std::endl;
return -1; // Or handle as needed
}
}
// Check if the stack is empty
bool empty() {
return data.empty();
}
// Get the size of the stack
int size() {
return data.size();
}
};

View File

@@ -0,0 +1,26 @@
#include <iostream>
#include "stack.h"
int main() {
Stack<int> myStack;
myStack.push(10);
myStack.push(20);
myStack.push(30);
myStack.push(40);
myStack.push(50);
std::cout << "Size of stack: " << myStack.size() << std::endl;
std::cout << "Top element: " << myStack.top() << std::endl;
if (!myStack.empty()) {
std::cout << "Stack is not empty" << std::endl;
} else {
std::cout << "Stack is empty" << std::endl;
}
myStack.pop();
std::cout << "Top element after pop: " << myStack.top() << std::endl;
return 0;
}