STACK (TUMPUKAN) di C++

- **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