Pertemuan 6 - Stack (Tumpukan)

 Pertemuan 6 - Stack (Tumpukan)

a. Pengertian Stack

Stack adalah struktur data linear yang mengikuti prinsip LIFO (Last In, First Out), yaitu elemen terakhir yang dimasukkan adalah elemen pertama yang dikeluarkan.

b. Operasi Dasar pada Stack

  1. Push: Menambahkan elemen ke atas stack.

  2. Pop: Menghapus elemen teratas dari stack.

  3. Peek (Top): Mengembalikan elemen teratas tanpa menghapusnya.

  4. isEmpty: Mengecek apakah stack kosong.

c. Implementasi Stack dalam C++

Berikut adalah contoh implementasi stack menggunakan array:

#include <iostream>
using namespace std;

#define MAX 100

class Stack {
    int top;
public:
    int arr[MAX];
    Stack() { top = -1; }
    bool push(int x);
    int pop();
    int peek();
    bool isEmpty();
};

bool Stack::push(int x) {
    if (top >= MAX - 1) {
        cout << "Stack Overflow" << endl;
        return false;
    } else {
        arr[++top] = x;
        return true;
    }
}

int Stack::pop() {
    if (top < 0) {
        cout << "Stack Underflow" << endl;
        return -1;
    } else {
        return arr[top--];
    }
}

int Stack::peek() {
    if (top < 0) {
        cout << "Stack is Empty" << endl;
        return -1;
    } else {
        return arr[top];
    }
}

bool Stack::isEmpty() {
    return (top < 0);
}

int main() {
    Stack s;
    s.push(10);
    s.push(20);
    s.push(30);
    cout << "Top element: " << s.peek() << endl;
    cout << "Popped element: " << s.pop() << endl;
    cout << "Top element after pop: " << s.peek() << endl;
    return 0;
}

6. Kelebihan dan Kekurangan Stack

Kelebihan:

  • Mudah diimplementasikan dalam berbagai bahasa pemrograman.

  • Efisien dalam penggunaan memori karena hanya memanfaatkan satu pointer (top).

Kekurangan:

  • Terbatas dalam akses data karena hanya bisa diakses dari atas.

  • Ukuran tetap jika menggunakan array, memerlukan pengelolaan ukuran jika menggunakan linked list.