- **Stack** adalah struktur data yang mengikuti prinsip LIFO (Last In, First Out). Artinya, elemen terakhir yang dimasukkan adalah elemen pertama yang akan dikeluarkan.
- Stack dapat digunakan untuk banyak tujuan, seperti pengelolaan memori, pelacakan panggilan fungsi, dan evaluasi ekspresi.
### Operasi Dasar Pada Stack:
1. **Push**: Menambahkan elemen ke puncak stack.
2. **Pop**: Menghapus elemen dari puncak stack.
3. **Peek/Top**: Mengakses elemen di puncak tanpa menghapusnya.
4. **isEmpty**: Memeriksa apakah stack kosong.
### Implementasi Stack Dengan Array:
```cpp
#include <iostream>
#define MAX 1000 // Ukuran maksimum stack
class Stack {
int top;
public:
int a[MAX]; // Array untuk menyimpan elemen stack
Stack() { top = -1; }
bool push(int x);
int pop();
int peek();
bool isEmpty();
};
bool Stack::push(int x) {
if (top >= (MAX - 1)) {
std::cout << "Stack Overflow";
return false;
} else {
a[++top] = x;
std::cout << x << " pushed into stack\n";
return true;
}
}
int Stack::pop() {
if (top < 0) {
std::cout << "Stack Underflow";
return 0;
} else {
int x = a[top--];
return x;
}
}
int Stack::peek() {
if (top < 0) {
std::cout << "Stack is Empty";
return 0;
} else {
int x = a[top];
return x;
}
}
bool Stack::isEmpty() {
return (top < 0);
}
int main() {
Stack stack;
stack.push(10);
stack.push(20);
stack.push(30);
std::cout << stack.pop() << " Popped from stack\n";
return 0;
}
```
### Implementasi Stack Dengan STL (Standard Template Library):
C++ juga menyediakan dukungan bawaan untuk stack dengan menggunakan STL. Ini sangat memudahkan pekerjaan kita.
```cpp
#include <iostream>
#include <stack>
int main() {
std::stack<int> stack;
stack.push(10);
stack.push(20);
stack.push(30);
std::cout << stack.top() << " is at the top of the stack\n";
stack.pop();
std::cout << stack.top() << " is at the top of the stack after one pop\n";
return 0;
}
```
### Penjelasan:
1. **stack.push(angka)**: Menambahkan elemen ke puncak stack.
2. **stack.pop()**: Menghapus elemen dari puncak stack.
3. **stack.top()**: Mengakses elemen di puncak stack tanpa menghapusnya.
Teknik stack di C++ sangat berguna dan sering digunakan dalam pemrograman. Gunakan sesuai kebutuhan anda!
0 Komentar