adding stack implementation
This commit is contained in:
@@ -203,6 +203,10 @@ int main() {
|
|||||||
|
|
||||||
You can compile and run this above [program](stack.cpp).
|
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
|
## 14.2 Additional STL Container Classes: Queues
|
||||||
|
|
||||||
- A queue is a linear data structure that follows the First-In-First-Out (FIFO) principle.
|
- A queue is a linear data structure that follows the First-In-First-Out (FIFO) principle.
|
||||||
|
|||||||
43
lectures/14_stacks_queues/stack.h
Normal file
43
lectures/14_stacks_queues/stack.h
Normal 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();
|
||||||
|
}
|
||||||
|
};
|
||||||
26
lectures/14_stacks_queues/stack_test.cpp
Normal file
26
lectures/14_stacks_queues/stack_test.cpp
Normal 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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user