Skip to content

Bab 5: Struktur Data Dasar

Published: at 10:57 PM

Struktur data adalah cara penyimpanan dan pengorganisasian data sehingga memungkinkan untuk diakses dan dimodifikasi secara efisien. Memilih struktur data yang tepat adalah kunci untuk mengembangkan algoritma yang efisien. Dalam bab ini, kita akan membahas beberapa struktur data dasar: array, linked list, stack, dan queue.

5.1 Array

Array adalah struktur data yang menyimpan elemen-elemen dalam urutan yang terstruktur dan setiap elemen diakses melalui indeks. Array memiliki ukuran yang tetap dan setiap elemen harus memiliki tipe data yang sama.

Kelebihan dan Kekurangan Array
Contoh Implementasi Array dalam Python
arr = [1, 2, 3, 4, 5]

# Akses elemen
print(arr[2])  # Output: 3

# Menambah elemen (di akhir)
arr.append(6)
print(arr)  # Output: [1, 2, 3, 4, 5, 6]

# Menghapus elemen
arr.remove(3)
print(arr)  # Output: [1, 2, 4, 5, 6]

5.2 Linked List

Linked list adalah struktur data yang terdiri dari node-node di mana setiap node berisi data dan referensi ke node berikutnya. Linked list tidak memiliki ukuran tetap dan elemen dapat dengan mudah disisipkan atau dihapus.

Kelebihan dan Kekurangan Linked List
Contoh Implementasi Linked List dalam Python
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            return
        last = self.head
        while last.next:
            last = last.next
        last.next = new_node

    def display(self):
        current = self.head
        while current:
            print(current.data, end=" -> ")
            current = current.next
        print("None")

# Contoh penggunaan
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
ll.display()  # Output: 1 -> 2 -> 3 -> None

5.3 Stack

Stack adalah struktur data yang mengikuti prinsip LIFO (Last In, First Out), di mana elemen terakhir yang ditambahkan akan menjadi elemen pertama yang dihapus. Operasi dasar pada stack adalah push (menambahkan elemen) dan pop (menghapus elemen).

Kelebihan dan Kekurangan Stack
Contoh Implementasi Stack dalam Python
class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()

    def is_empty(self):
        return len(self.items) == 0

    def peek(self):
        if not self.is_empty():
            return self.items[-1]

    def display(self):
        print(self.items)

# Contoh penggunaan
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack.display()  # Output: [1, 2, 3]
print(stack.pop())  # Output: 3
stack.display()  # Output: [1, 2]

5.4 Queue

Queue adalah struktur data yang mengikuti prinsip FIFO (First In, First Out), di mana elemen pertama yang ditambahkan akan menjadi elemen pertama yang dihapus. Operasi dasar pada queue adalah enqueue (menambahkan elemen) dan dequeue (menghapus elemen).

Kelebihan dan Kekurangan Queue
Contoh Implementasi Queue dalam Python
class Queue:
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        self.items.append(item)

    def dequeue(self):
        if not self.is_empty():
            return self.items.pop(0)

    def is_empty(self):
        return len(self.items) == 0

    def display(self):
        print(self.items)

# Contoh penggunaan
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
queue.display()  # Output: [1, 2, 3]
print(queue.dequeue())  # Output: 1
queue.display()  # Output: [2, 3]

Kesimpulan Bab 5

Pada bab ini, kita telah membahas empat struktur data dasar: array, linked list, stack, dan queue. Masing-masing struktur data memiliki kelebihan dan kekurangan, dan pemilihan struktur data yang tepat sangat penting untuk efisiensi dan efektivitas algoritma. Memahami struktur data ini adalah langkah penting dalam pemrograman dan pengembangan algoritma.

Di bab selanjutnya, kita akan mengeksplorasi algoritma pencarian dan pengurutan lebih lanjut menggunakan struktur data ini, serta bagaimana mereka diterapkan dalam pemrograman yang lebih kompleks.