Tuesday, April 21, 2026

Linked List

 



Linked List

Linked List adalah struktur data yang terdiri dari kumpulan objek yang disebut node, yang tersimpan secara tidak berurutan (tidak bersebelahan) di dalam memori.

Berbeda dengan array, elemen pada linked list tidak harus berada pada alamat memori yang berdekatan

Struktur Node pada Linked List

Setiap node dalam linked list memiliki dua bagian utama, yaitu:

  1. Data
    • Berisi nilai atau informasi yang disimpan pada node tersebut.
  2. Pointer (Next)
    • Berisi alamat memori dari node berikutnya dalam list.

Node Terakhir

Node terakhir dalam linked list memiliki ciri khusus:

  • Pointer-nya tidak menunjuk ke node lain
  • Biasanya berisi nilai NULL

Artinya, node tersebut adalah akhir dari linked list

 

Implementasi dalam C++

#include <iostream>

using namespace std;

// Struktur Node
struct Node {
    int data;
    Node* next;
};

int main() {
    // Membuat 3 node
    Node* node1 = new Node();
    Node* node2 = new Node();
    Node* node3 = new Node();

    // Isi data
    node1->data = 10;
    node2->data = 20;
    node3->data = 30;

    // Hubungkan node
    node1->next = node2;
    node2->next = node3;
    node3->next = NULL;

    // Traversal (menampilkan data)
    Node* current = node1;
    while (current != NULL) {
        cout << current->data << " -> ";
        current = current->next;
    }
    cout << "NULL";

    return 0;
}



Referensi 


Tuesday, April 14, 2026

Queue





Queue (Antrian) adalah struktur data linear yang merupakan kumpulan elemen. Queue adalah jenis khusus dari list, di mana elemen dimasukkan pada satu ujung yang disebut rear (belakang) dan dihapus dari ujung lainnya yang disebut front (depan).

Prinsip utama dari queue adalah FIFO (First-In-First-Out) atau masuk pertama, keluar pertama.

Queue merupakan struktur data abstrak (Abstract Data Type / ADT) dan sangat berguna dalam pemrograman. Konsepnya mirip dengan antrian tiket di depan bioskop, di mana orang yang pertama kali masuk antrian adalah orang pertama yang mendapatkan tiket.

Contoh dalam kehidupan nyata lainnya adalah jalan satu arah satu jalur, di mana kendaraan yang masuk terlebih dahulu akan keluar terlebih dahulu.

Operasi utama:

  • enqueue() → tambah data
  • dequeue() → hapus data
Proses
ALGORITHM Enqueue(Q, item)
INPUT    : Q (queue), item (elemen yang akan dimasukkan)
OUTPUT   : Queue Q yang telah ditambahkan elemen baru

BEGIN
    IF rear = MAX - 1 THEN
        OUTPUT "Queue Overflow"
        RETURN
    ENDIF

    IF front = -1 THEN
        front ← 0
        rear  ← 0
    ELSE
        rear ← rear + 1
    ENDIF

    Q[rear] ← item

END

Penjelasan Variabel

  • Q : array sebagai penyimpan queue
  • MAX : kapasitas maksimum queue
  • front : penunjuk elemen depan
  • rear : penunjuk elemen belakang
  • item : data yang akan dimasukkan

DEQUEUE

ALGORITHM Dequeue(Q)
INPUT    : Q (queue)
OUTPUT   : Elemen yang dihapus dari queue

BEGIN
    IF front = -1 THEN
        OUTPUT "Queue Underflow"
        RETURN
    ENDIF

    item ← Q[front]

    IF front = rear THEN
        front ← -1
        rear  ← -1
    ELSE
        front ← front + 1
    ENDIF

    RETURN item

END

Contoh :

  • Antrian bank
  • Printer queue
  • Task scheduling OS

  • Implementasi Array


    #include <iostream>
    using namespace std;

    #define MAX 5

    class Queue {
    private:
        int arr[MAX];
        int front, rear;

    public:
        Queue() {
            front = -1;
            rear = -1;
        }

        bool isEmpty() {
            return (front == -1);
        }

        bool isFull() {
            return (rear == MAX - 1);
        }

        void enqueue(int x) {
            if (isFull()) {
                cout << "Queue Overflow\n";
                return;
            }
            if (isEmpty()) {
                front = 0;
            }
            arr[++rear] = x;
            cout << "Elemen " << x << " masuk ke queue\n";
        }

        void dequeue() {
            if (isEmpty()) {
                cout << "Queue Underflow\n";
                return;
            }
            cout << "Elemen " << arr[front] << " keluar dari queue\n";
            if (front == rear) {
                front = rear = -1;
            } else {
                front++;
            }
        }

        void display() {
            if (isEmpty()) {
                cout << "Queue kosong\n";
                return;
            }
            cout << "Isi Queue: ";
            for (int i = front; i <= rear; i++) {
                cout << arr[i] << " ";
            }
            cout << endl;
        }
    };

    int main() {
        Queue q;

        q.enqueue(10);
        q.enqueue(20);
        q.enqueue(30);

        q.display();

        q.dequeue();
        q.display();

        return 0;
    }

    Implementasi Link List


    #include <iostream>
    using namespace std;

    struct Node {
        int data;
        Node* next;
    };

    class Queue {
    private:
        Node *front, *rear;

    public:
        Queue() {
            front = rear = NULL;
        }

        bool isEmpty() {
            return (front == NULL);
        }

        void enqueue(int x) {
            Node* newNode = new Node();
            newNode->data = x;
            newNode->next = NULL;

            if (rear == NULL) {
                front = rear = newNode;
            } else {
                rear->next = newNode;
                rear = newNode;
            }
            cout << "Elemen " << x << " masuk ke queue\n";
        }

        void dequeue() {
            if (isEmpty()) {
                cout << "Queue kosong\n";
                return;
            }

            Node* temp = front;
            cout << "Elemen " << temp->data << " keluar dari queue\n";

            front = front->next;

            if (front == NULL) {
                rear = NULL;
            }

            delete temp;
        }

        void display() {
            if (isEmpty()) {
                cout << "Queue kosong\n";
                return;
            }

            Node* temp = front;
            cout << "Isi Queue: ";
            while (temp != NULL) {
                cout << temp->data << " ";
                temp = temp->next;
            }
            cout << endl;
        }
    };

    int main() {
        Queue q;

        q.enqueue(5);
        q.enqueue(15);
        q.enqueue(25);

        q.display();

        q.dequeue();
        q.display();

        return 0;
    }

    Monday, April 6, 2026

    Studi Kasus Stack

     




    Konversi ke Postfix




    #include <iostream>
    #include <stack>
    #include <string>
    #include <cctype>
    using namespace std;

    // Fungsi untuk menentukan prioritas operator
    int precedence(char op) {
        if (op == '^')
            return 3;
        else if (op == '*' || op == '/')
            return 2;
        else if (op == '+' || op == '-')
            return 1;
        else
            return 0;
    }

    // Fungsi untuk cek apakah karakter adalah operator
    bool isOperator(char c) {
        return (c == '+' || c == '-' || c == '*' || c == '/' || c == '^');
    }

    // Fungsi utama konversi infix ke postfix
    string infixToPostfix(string infix) {
        stack<char> st;
        string postfix = "";

        for (int i = 0; i < infix.length(); i++) {
            char c = infix[i];

            // Jika operand (huruf/angka)
            if (isalnum(c)) {
                postfix += c;
            }
            // Jika '('
            else if (c == '(') {
                st.push(c);
            }
            // Jika ')'
            else if (c == ')') {
                while (!st.empty() && st.top() != '(') {
                    postfix += st.top();
                    st.pop();
                }
                if (!st.empty())
                    st.pop(); // hapus '('
            }
            // Jika operator
            else if (isOperator(c)) {
                while (!st.empty() && precedence(st.top()) >= precedence(c)) {
                    postfix += st.top();
                    st.pop();
                }
                st.push(c);
            }
        }

        // Pop semua operator tersisa
        while (!st.empty()) {
            postfix += st.top();
            st.pop();
        }

        return postfix;
    }

    // Main function
    int main() {
        string infix;

        cout << "Masukkan ekspresi infix: ";
        cin >> infix;

        string postfix = infixToPostfix(infix);

        cout << "Postfix: " << postfix << endl;

        return 0;
    }

    Evaluasi Postfix






    #include <iostream>
    #include <stack>
    #include <cctype>
    using namespace std;

    // Fungsi evaluasi postfix
    int evaluatePostfix(string exp) {
        stack<int> st;

        for (char c : exp) {

            // Jika operand (angka)
            if (isdigit(c)) {
                st.push(c - '0'); // konversi char ke int
            }
            // Jika operator
            else {
                int val2 = st.top(); st.pop();
                int val1 = st.top(); st.pop();

                switch (c) {
                    case '+': st.push(val1 + val2); break;
                    case '-': st.push(val1 - val2); break;
                    case '*': st.push(val1 * val2); break;
                    case '/': st.push(val1 / val2); break;
                }
            }
        }

        return st.top();
    }

    // Main
    int main() {
        string postfix;

        cout << "Masukkan ekspresi postfix: ";
        cin >> postfix;

        cout << "Hasil evaluasi: " << evaluatePostfix(postfix) << endl;

        return 0;
    }


    Multi Digit Postfix




    #include <iostream>
    #include <stack>
    #include <sstream>
    using namespace std;

    int evaluatePostfix(string exp) {
        stack<int> st;
        stringstream ss(exp);
        string token;

        while (ss >> token) {
            // Jika operator
            if (token == "+" || token == "-" || token == "*" || token == "/") {
                int val2 = st.top(); st.pop();
                int val1 = st.top(); st.pop();

                if (token == "+") st.push(val1 + val2);
                else if (token == "-") st.push(val1 - val2);
                else if (token == "*") st.push(val1 * val2);
                else if (token == "/") st.push(val1 / val2);
            }
            // Jika operand
            else {
                st.push(stoi(token));
            }
        }

        return st.top();
    }

    int main() {
        string postfix;

        cout << "Masukkan postfix (pisahkan dengan spasi): ";
        getline(cin, postfix);

        cout << "Hasil: " << evaluatePostfix(postfix) << endl;

        return 0;
    }


    Pengumpulan Tugas


    Absensi



    Tuesday, March 31, 2026

    STACK

     


    Definisi

    Stack adalah struktur data linear yang menyimpan kumpulan elemen, di mana proses:

    • penambahan (insertion / push)
    • penghapusan (deletion / pop)

    hanya dapat dilakukan pada satu sisi yang disebut top (puncak stack).


    Prinsip Stack

    Stack menggunakan prinsip:

    👉 LIFO (Last In, First Out)
    Artinya:

    • Elemen yang terakhir dimasukkan akan menjadi yang pertama dikeluarkan

    Analogi Sederhana

    Seperti tumpukan piring:

    • Piring terakhir yang diletakkan di atas → diambil pertama
    • Tidak bisa mengambil dari tengah

    Operasi Dasar Stack

    1. Push → menambahkan elemen ke stack
    2. Pop → menghapus elemen dari stack
    3. Peek/Top → melihat elemen paling atas
    4. isEmpty → mengecek apakah stack kosong
    5. isFull → mengecek apakah stack penuh (untuk array)
    Contoh Implementasi Stack dalam C++ (Menggunakan Array)

    #include <iostream>
    using namespace std;

    #define MAX 5

    class Stack {
    private:
        int arr[MAX];
        int top;

    public:
        Stack() {
            top = -1; // stack kosong
        }

        // Push
        void push(int x) {
            if (top == MAX - 1) {
                cout << "Stack Overflow\n";
            } else {
                arr[++top] = x;
                cout << x << " ditambahkan ke stack\n";
            }
        }

        // Pop
        void pop() {
            if (top == -1) {
                cout << "Stack Underflow\n";
            } else {
                cout << arr[top--] << " dihapus dari stack\n";
            }
        }

        // Peek
        void peek() {
            if (top == -1) {
                cout << "Stack kosong\n";
            } else {
                cout << "Elemen teratas: " << arr[top] << endl;
            }
        }
    };

    int main() {
        Stack s;

        s.push(10);
        s.push(20);
        s.push(30);

        s.peek();

        s.pop();
        s.peek();

        return 0;
    }


    Stack dengan Link List

    Pada implementasi ini:

    • Stack direpresentasikan sebagai Linked List
    • Setiap elemen disebut node
    • Setiap node memiliki:
      • data
      • pointer ke node berikutnya

    👉 Top stack = node paling depan (head)


    Operasi pada Stack (Linked List)

    • Push → menambah node di depan
    • Pop → menghapus node di depan
    • Peek → melihat data paling atas
    • isEmpty → cek apakah stack kosong

    Implementasi C++

    #include <iostream>
    using namespace std;

    // Struktur Node
    struct Node {
        int data;
        Node* next;
    };

    class Stack {
    private:
        Node* top;

    public:
        // Constructor
        Stack() {
            top = NULL;
        }

        // Push (tambah data)
        void push(int x) {
            Node* newNode = new Node();
            newNode->data = x;
            newNode->next = top;
            top = newNode;

            cout << x << " ditambahkan ke stack\n";
        }

        // Pop (hapus data)
        void pop() {
            if (top == NULL) {
                cout << "Stack Underflow\n";
                return;
            }

            Node* temp = top;
            cout << temp->data << " dihapus dari stack\n";
            top = top->next;
            delete temp;
        }

        // Peek (lihat data teratas)
        void peek() {
            if (top == NULL) {
                cout << "Stack kosong\n";
            } else {
                cout << "Elemen teratas: " << top->data << endl;
            }
        }

        // Cek kosong
        bool isEmpty() {
            return (top == NULL);
        }
    };

    int main() {
        Stack s;

        s.push(10);
        s.push(20);
        s.push(30);

        s.peek();

        s.pop();
        s.peek();

        return 0;
    }

    Penjelasan

    • Push
      • Buat node baru
      • Arahkan next ke top lama
      • Update top
    • Pop
      • Simpan node top
      • Geser top ke node berikutnya
      • Hapus node lama

    Kelebihan Stack dengan Linked List

    ✅ Tidak memiliki batas ukuran (dinamis)
    ✅ Tidak terjadi overflow seperti array (selama memori tersedia)


    Application of Stack: Expression Conversion

    Stack sangat banyak digunakan dalam manipulasi ekspresi matematika, khususnya untuk mengubah bentuk ekspresi agar mudah dievaluasi oleh komputer.


    Jenis Notasi Ekspresi

    Sebelum masuk ke konversi, pahami dulu 3 jenis notasi:

    1. Infix → operator di tengah
      Contoh: A + B
    2. Postfix (Reverse Polish Notation) → operator di belakang
      Contoh: A B +
    3. Prefix (Polish Notation) → operator di depan
      Contoh: + A B

    Mengapa Perlu Konversi?

    • Komputer lebih mudah memproses postfix/prefix
    • Tidak perlu tanda kurung
    • Tidak ambigu (tidak perlu aturan prioritas)

    Infix → Postfix

    Contoh

    Infix : A + B * C
    Postfix : A B C * +

    Algoritma (Menggunakan Stack)

    1. Scan dari kiri ke kanan
    2. Jika operand → langsung output
    3. Jika operator → bandingkan prioritas dengan stack
    4. Gunakan stack untuk menyimpan operator
    5. Keluarkan operator sesuai prioritas

    Intinya

    • Stack digunakan untuk menyimpan operator sementara

    Referensi


    Kebutuhan Struktur Data

    Pendahuluan (Introduction)

    Struktur data dapat didefinisikan sebagai kumpulan elemen data yang menyediakan cara efisien untuk menyimpan dan mengorganisasikan data di dalam komputer sehingga dapat digunakan secara efektif.

    Beberapa contoh struktur data adalah array, linked list, stack, queue, dan lain-lain.

    Struktur data digunakan secara luas dalam hampir setiap aspek ilmu komputer, seperti sistem operasi, desain compiler, kecerdasan buatan (Artificial Intelligence), grafika komputer, dan banyak lagi.

    Struktur data merupakan bagian utama dari banyak algoritma dalam ilmu komputer karena memungkinkan programmer untuk mengelola data secara efisien.

    Struktur data juga berperan penting dalam meningkatkan performa perangkat lunak atau program, karena fungsi utama software adalah menyimpan dan mengambil data pengguna secepat mungkin.


    Terminologi Dasar (Basic Terminology)

    Struktur data merupakan blok bangunan (building blocks) dari setiap program atau perangkat lunak. Memilih struktur data yang tepat merupakan salah satu tugas paling sulit bagi seorang programmer.

    Berikut adalah beberapa istilah penting dalam struktur data:

    1. Data

    Data dapat didefinisikan sebagai nilai dasar atau kumpulan nilai.
    Contoh: nama mahasiswa dan NIM merupakan data tentang mahasiswa.

    2. Group Item

    Item data yang memiliki sub-item disebut group item.
    Contoh: nama mahasiswa terdiri dari nama depan dan nama belakang.

    3. Record

    Record adalah kumpulan berbagai item data.
    Contoh: data mahasiswa yang terdiri dari nama, alamat, mata kuliah, dan nilai.

    4. File

    File adalah kumpulan record dari satu jenis entitas.
    Contoh: data karyawan dalam sebuah perusahaan, di mana setiap record berisi data satu karyawan.

    5. Attribute dan Entity

    • Entity (Entitas): merepresentasikan sekumpulan objek tertentu
    • Attribute (Atribut): karakteristik atau properti dari entitas

    Contoh:
    Entitas = Mahasiswa
    Atribut = Nama, NIM, Alamat

    6. Field

    Field adalah unit informasi terkecil yang merepresentasikan atribut dari suatu entitas.


    Kebutuhan Struktur Data (Need of Data Structures)

    Seiring berkembangnya aplikasi dan meningkatnya jumlah data, muncul beberapa permasalahan berikut:

    1. Kecepatan Proses (Processor Speed)

    Untuk menangani data dalam jumlah sangat besar dibutuhkan pemrosesan yang cepat.
    Namun, jika data terus bertambah hingga miliaran, prosesor dapat mengalami kesulitan.

    2. Pencarian Data (Data Search)

    Misalnya terdapat 1 juta data dalam suatu sistem.
    Jika pencarian dilakukan secara berurutan, maka proses akan menjadi lambat.

    3. Permintaan Bersamaan (Multiple Requests)

    Jika ribuan pengguna mengakses data secara bersamaan di server, maka sistem dapat mengalami overload.

    ➡️ Solusi:
    Struktur data digunakan untuk mengorganisasi data agar pencarian menjadi cepat tanpa harus memeriksa semua data.


    Keuntungan Struktur Data (Advantages of Data Structures)

    1. Efisiensi (Efficiency)

    Efisiensi program sangat bergantung pada pemilihan struktur data.

    Contoh:

    • Menggunakan array → pencarian harus satu per satu (linear search)
    • Menggunakan struktur lain → bisa lebih cepat:
      • Binary Search Tree
      • Hash Table
      • Ordered Array

    2. Reusability (Dapat Digunakan Kembali)

    Struktur data dapat digunakan kembali dalam berbagai program.
    Implementasinya bahkan bisa dijadikan library yang digunakan oleh banyak aplikasi.

    3. Abstraction (Abstraksi)

    Struktur data didefinisikan menggunakan ADT (Abstract Data Type) yang memberikan tingkat abstraksi.

    Artinya:

    • Programmer hanya menggunakan interface
    • Tidak perlu mengetahui detail implementasi di dalamnya

    PRIMITIVE TYPE

    Primitive data type adalah tipe data dasar yang langsung disediakan oleh bahasa pemrograman dan tidak tersusun dari tipe lain.

    Ciri-ciri

    • Sederhana dan dasar
    • Menyimpan satu nilai
    • Langsung didukung oleh bahasa (built-in)
    • Operasi sudah tersedia (misalnya: +, -, *, /)

    Contoh

    • int → bilangan bulat
    • float / double → bilangan pecahan
    • char → karakter
    • bool → true/false
    int umur = 20;
    float nilai = 85.5;
    char grade = 'A';
    bool lulus = true;

    ABSTRACT DATA TYPE

    Abstract Data Type (ADT) adalah tipe data yang didefinisikan berdasarkan perilaku (operasi), bukan implementasinya.

    👉 Fokus pada:

    • Apa yang bisa dilakukan (operasi)
    • Bukan bagaimana cara implementasinya

    Ciri-ciri

    • Lebih kompleks dari primitive
    • Bisa terdiri dari banyak data
    • Menyembunyikan detail implementasi (abstraction)
    • Didefinisikan dengan operasi (method)

    Contoh ADT

    • List
    • Stack (push, pop)
    • Queue (enqueue, dequeue)
    • Tree
    • Graph

    Contoh Konsep Stack

    Operasi:

    • push(x) → tambah data
    • pop() → ambil data

    Implementasi bisa:

    • Array
    • Linked Lis


    Jenis-Jenis Struktur Data Linear

    1. Array

    Array adalah kumpulan elemen data yang memiliki tipe yang sama, di mana setiap elemen disebut sebagai elemen array.

    Tipe data dari elemen array bisa berupa tipe data apa pun yang valid seperti char, int, float, atau double.

    Elemen-elemen dalam array memiliki nama variabel yang sama, tetapi masing-masing memiliki indeks (subscript) yang berbeda.

    Array dapat berupa:

    • Satu dimensi
    • Dua dimensi
    • Multidimensi

    Contoh elemen array:

    age[0], age[1], age[2], age[3], ..., age[98], age[99]

    2. Linked List

    Linked list adalah struktur data linear yang digunakan untuk menyimpan daftar data di dalam memori.

    Linked list dapat dipandang sebagai kumpulan node yang disimpan pada lokasi memori yang tidak berurutan (non-contiguous).

    Setiap node dalam linked list memiliki:

    • Data
    • Pointer (referensi) ke node berikutnya

    3. Stack

    Stack adalah struktur data linear di mana proses penambahan (insertion) dan penghapusan (deletion) hanya dilakukan pada satu sisi, yang disebut top.

    Stack merupakan Abstract Data Type (ADT) dan dapat diimplementasikan dalam berbagai bahasa pemrograman.

    Disebut stack karena perilakunya seperti tumpukan di dunia nyata, misalnya:

    • Tumpukan piring
    • Tumpukan kartu

    ➡️ Prinsip utama:
    LIFO (Last In, First Out)
    (Data terakhir masuk, pertama keluar)


    4. Queue

    Queue adalah struktur data linear di mana:

    • Penambahan elemen dilakukan di bagian belakang (rear)
    • Penghapusan elemen dilakukan di bagian depan (front)

    Queue juga merupakan Abstract Data Type (ADT), mirip dengan stack.

    Queue terbuka di kedua ujungnya sehingga mengikuti prinsip:
    FIFO (First In, First Out)
    (Data pertama masuk, pertama keluar)





    Jenis-Jenis Struktur Data Non-Linear

    1. Tree (Pohon)

    Tree adalah struktur data bertingkat (multilevel) yang memiliki hubungan hierarki antar elemen yang disebut node.

    • Node paling bawah dalam hierarki disebut leaf (daun)
    • Node paling atas disebut root (akar)

    Setiap node memiliki pointer (referensi) untuk menunjuk ke node lain yang berdekatan.

    Struktur tree didasarkan pada hubungan:

    • Parent (induk)
    • Child (anak)

    Karakteristik:

    • Setiap node dapat memiliki lebih dari satu anak (child), kecuali leaf
    • Setiap node hanya memiliki maksimal satu parent, kecuali root
    • Root tidak memiliki parent

    Tree dapat diklasifikasikan menjadi berbagai jenis, yang biasanya dibahas lebih lanjut, seperti:

    • Binary Tree
    • Binary Search Tree
    • AVL Tree
    • dan lainnya

    Operasi pada Struktur Data

    1. Traversing (Penelusuran)

    Setiap struktur data terdiri dari sekumpulan elemen data.

    Traversing adalah proses mengunjungi setiap elemen dalam struktur data untuk melakukan operasi tertentu seperti pencarian atau pengurutan.

    Contoh:
    Jika kita ingin menghitung rata-rata nilai dari 6 mata pelajaran, maka kita harus menelusuri seluruh elemen array nilai, menjumlahkannya, lalu membaginya dengan jumlah mata pelajaran (6) untuk mendapatkan nilai rata-rata.


    2. Insertion (Penyisipan)

    Insertion adalah proses menambahkan elemen ke dalam struktur data pada posisi tertentu.

    Jika ukuran struktur data adalah n, maka elemen dapat ditambahkan hingga kapasitas maksimum yang tersedia.


    3. Deletion (Penghapusan)

    Deletion adalah proses menghapus elemen dari struktur data.

    Penghapusan dapat dilakukan pada posisi mana saja dalam struktur data.

    Jika kita mencoba menghapus elemen dari struktur data yang kosong, maka akan terjadi kondisi yang disebut underflow.


    4. Searching (Pencarian)

    Searching adalah proses menemukan lokasi suatu elemen dalam struktur data.

    Terdapat dua algoritma umum untuk pencarian:

    • Linear Search
    • Binary Search

    (Keduanya biasanya dibahas lebih lanjut dalam materi algoritma)


    5. Sorting (Pengurutan)

    Sorting adalah proses mengurutkan elemen dalam struktur data berdasarkan aturan tertentu (misalnya naik atau turun).

    Contoh algoritma sorting:

    • Insertion Sort
    • Selection Sort
    • Bubble Sort

    6. Merging (Penggabungan)

    Merging adalah proses menggabungkan dua struktur data (misalnya list) yang memiliki tipe elemen yang sama menjadi satu struktur data baru.

    Contoh:
    Jika terdapat:

    • List A berukuran M
    • List B berukuran N

    Maka hasil penggabungannya adalah:

    • List C berukuran (M + N)

    Kesimpulan

    Operasi dasar dalam struktur data meliputi:

    • Traversing → menelusuri data
    • Insertion → menambah data
    • Deletion → menghapus data
    • Searching → mencari data
    • Sorting → mengurutkan data
    • Merging → menggabungkan data

    Semua operasi ini sangat penting dalam pengolahan data agar program menjadi efisien dan optimal.

    Referensi

    https://drive.google.com/file/d/142wsjzK1ANXB83TWq4tmGtRFdUwHfv1u/view?usp=drive_link

    https://drive.google.com/file/d/1Kk0cpSBEigCmPTPHtvnaGFmwPi6H1sQY/view?usp=drive_link

    Absensi



    Monday, March 30, 2026

    Kompleksitas Algoritma dan Struktur Data

     



    Analisis Algoritma Mengukur Efisiensi

    Apa itu Analisis Algoritma?

    Analisis algoritma adalah proses untuk mengevaluasi seberapa efisien suatu algoritma dalam menyelesaikan masalah.

    Efisiensi diukur berdasarkan:

    1. ⏱️ Waktu (Time Complexity)

    • Berapa lama algoritma berjalan
    • Bergantung pada ukuran input (n)

    2. 💾 Memori (Space Complexity)

    • Berapa banyak memori yang digunakan







    Linked List

      PPT Linked List Linked List Linked List adalah struktur data yang terdiri dari kumpulan objek yang disebut node , yang tersimpan secara...