TUGAS PERTEMUAN 7_STRUKTUR DATA (D)

Nama : Rado Putra Yustisiawan

NRP : 5025251048

Kelas : Struktur Data D



TUGAS 1
Mencoba setiap short code yang tersedia, dengan format pengerjaan
a. Nama program dan deskripsi
b. Screenshoot dari program
c. Penjelasan dari program
d. Link Source Code


1) KODE 1

    a. Nama Program : Program Inisialisasi Antrean Sirkular
        Deskripsi : Program ini merupakan bagian awal (konstruktor) dari pembuatan struktur data antrean sirkular menggunakan template. Fungsinya adalah untuk memesan tempat di memori secara dinamis dan mengatur posisi awal penanda antrean agar siap digunakan untuk menyimpan data tipe apa pun.

    b. Screenshoot :


    c. Penjelasan Program :

template<class ItemType>: Membuat kelas ini menjadi template agar bisa menangani berbagai tipe data (seperti int, float, atau char) secara fleksibel

QueueType(int max): Fungsi konstruktor yang akan dipanggil otomatis saat objek antrean dibuat dengan menentukan kapasitas maksimalnya.

maxQue = max + 1;: Menentukan ukuran array sebenarnya dengan menambah 1 dari kapasitas yang diminta. Slot tambahan ini berfungsi sebagai "reserved" untuk membedakan kondisi penuh dan kosong.

front = maxQue - 1;: Mengatur posisi front di indeks terakhir array sebagai titik awal sebelum ada data yang keluar.

rear = maxQue - 1;: Mengatur posisi rear di indeks terakhir array sebagai titik awal sebelum ada data yang masuk.

items = new ItemType[maxQue];: Melakukan alokasi memori secara dinamis untuk membuat array sesuai ukuran maxQue yang sudah ditentukan.

    d. Link Source Code
https://drive.google.com/file/d/1QPE4FuyjCR-sHnhccQumOtTBIL_l0omq/view?usp=sharing





2) KODE 2

    a. Nama Program dan Deskripsi
        Nama Program : Program Penghapusan antrean
        Deskripsi : Program ini berfungsi untuk membebaskan atau membersihkan memori yang telah dipesan oleh objek antrean secara dinamis. Destruktor ini akan berjalan otomatis tepat sebelum objek antrean dihancurkan atau saat program selesai berjalan, guna mencegah kebocoran memori pada sistem.

    b. Screenshoot 


    c. Penjelasan Program 

template<class ItemType>: Menandakan bahwa destruktor ini adalah bagian dari kelas template QueueType.

~QueueType(): Simbol tilde (~) menunjukkan bahwa ini adalah sebuah destruktor. Berbeda dengan konstruktor, fungsi ini tidak menerima parameter apa pun.

delete [] items;: Perintah kunci untuk menghapus seluruh blok array items yang sebelumnya dibuat dengan perintah new. Kurung siku [] wajib digunakan karena yang dihapus adalah sebuah array, bukan variabel tunggal.

    d. Link Source Code
https://drive.google.com/file/d/1meluSrYgIOy_29iY08KQTOyt5n4KdTcG/view?usp=drive_link





3) KODE 3

    a. Nama Program dan Deskripsi
        Nama Program : Program Fungsi Pengecekan Status Antrean
        Deskripsi :Program ini berfungsi untuk mendeteksi kondisi isi antrean sirkular secara real-time. Fungsi IsEmpty digunakan untuk mengecek apakah antrean benar-benar kosong, sedangkan IsFull menggunakan logika matematika modulo untuk mendeteksi apakah antrean sudah mencapai kapasitas maksimalnya.

    b. Screenshoot

    c. Penjelasan Program

template<class ItemType>: Menandakan fungsi ini bekerja untuk tipe data apa pun yang kamu tentukan di awal.

bool QueueType<ItemType>::IsEmpty() const: Fungsi ini mengembalikan nilai boolean (true/false) dan ditandai const karena hanya membaca data tanpa mengubah isi antrean.

return (rear == front);: Dalam logika sirkular, jika posisi penanda belakang (rear) sama dengan penanda depan (front), itu adalah indikator mutlak antrean sedang kosong.

bool QueueType<ItemType>::IsFull() const: Fungsi untuk mengecek kepenuhan antrean.

return ( (rear + 1) % maxQue == front);: Ini adalah rumus sirkular. Kita mengecek apakah satu posisi di depan rear (setelah dimodulo dengan kapasitas) akan bertemu dengan front. Jika iya, berarti antrean penuh (tersisa satu slot kosong sebagai pembatas). 

    d. Link Source Code
https://drive.google.com/file/d/1GIxGdhXRYQtw7qSlB7MARyZbPPEin9Lb/view?usp=drive_link





4) KODE 4

    a. Nama Program dan Deskripsi
        Nama Program : Program penambahan elemen antrean (Enqueue)
        Deskripsi : Fungsi ini digunakan untuk memasukkan data baru ke dalam antrean. Data akan selalu ditambahkan di ujung belakang (rear). Karena menggunakan sistem sirkular, posisi rear akan dihitung ulang menggunakan operator modulo agar jika sudah di ujung array, ia bisa kembali ke indeks awal selama masih ada slot kosong.

    b. Screenshoot



    c. Penjelasan Program

rear = (rear + 1) % maxQue;: Ini adalah rumus utama antrean sirkular. Tujuannya agar posisi rear tidak terus bertambah keluar dari batas array. Jika rear sudah di posisi maksimal, hasil modulo akan mengembalikannya ke posisi 0.

items[rear] = newItem;: Setelah mendapatkan posisi indeks yang tepat, data baru disimpan ke dalam array items pada indeks rear tersebut

    d. Link Source Code
https://drive.google.com/file/d/1_hLFZs2WThPKzZ-WkjyzDmk3prHCVq-4/view?usp=drive_link





5) KODE 5

    a. Nama Program dan Deskripsi
        Nama Program : Program penambahan elemen antrean (Dequeue)
        Deskripsi : Fungsi ini digunakan untuk mengambil atau menghapus data dari antrean. Sesuai prinsip FIFO, data yang diambil adalah data yang berada di ujung depan (front). Sama seperti penambahan, penghapusan juga menggunakan logika sirkular untuk menggeser penanda front

    b. Screenshoot



    c. Penjelasan Program

front = (front + 1) % maxQue;: Menggeser penanda front satu langkah ke depan secara sirkular. Dalam implementasi ini, front menunjuk ke lokasi memori yang mendahului data asli.

item = items[front];: Data yang ada di posisi front yang baru disalin ke variabel item untuk dikembalikan ke pengguna

    d. Link Source Code
https://drive.google.com/file/d/1CiLDNflXzCoGheOJmi9SVeAu4SzdDM7z/view?usp=drive_link





6) KODE 6

    a. Nama Program dan Deskripsi
        Nama Program : Program Pengecekan Kondisi Ekstrim (Overflow & Underflow)
        Deskripsi : Bagian ini adalah pengaman sebelum memanggil fungsi Enqueue atau Dequeue. Overflow terjadi jika kita memaksa menambah data saat antrean penuh. Underflow terjadi jika kita mencoba mengambil data dari antrean yang sudah kosong.

    b. Screenshoot



    c. Penjelasan Program

Queue Overflow: Kondisi error akibat mencoba Enqueue pada antrean yang sudah penuh (IsFull).

Queue Underflow: Kondisi error akibat mencoba Dequeue pada antrean yang tidak memiliki elemen sama sekali (IsEmpty).

Fungsi If: Digunakan sebagai pencegahan (precondition) sebelum operasi dilakukan agar program tidak rusak (crash).

    d. Link Source Code
https://drive.google.com/file/d/1gT7Es2EP6QV-ZKH0Ebho3Wfo_LiWuQNB/view?usp=drive_link





7) KODE 7

    a. Nama Program dan Deskripsi
        Nama Program : Program Pemeriksa Palindrom Menggunakan Stack dan Queue.
        Deskripsi : Program ini menentukan apakah sebuah kalimat adalah palindrom (dibaca dari depan maupun belakang tetap sama). Strateginya adalah dengan memasukkan setiap karakter ke dalam Stack dan Queue secara bersamaan. Karakter yang keluar dari Stack akan terbalik, sedangkan yang keluar dari Queue tetap urut. Jika keduanya cocok karakter demi karakter, maka kalimat tersebut valid sebagai palindrom

    b. Screenshoot




    c. Penjelasan Program

isalpha(ch): Berfungsi untuk menyaring input agar hanya huruf yang diproses; angka atau simbol akan diabaikan.

toupper(ch): Memastikan pengecekan tidak sensitif terhadap huruf besar/kecil (Case Insensitive).

Prinsip Kerja:

Stack mengembalikan karakter terakhir yang masuk sebagai yang pertama keluar (LIFO).

Queue mengembalikan karakter pertama yang masuk sebagai yang pertama keluar (FIFO)

mismatches: Variabel penghitung kesalahan. Jika setelah semua karakter dibandingkan nilainya tetap 0, berarti urutan depan dan belakang sama persis

    d. Link Source Code
https://drive.google.com/file/d/1AYQa3JPwucYombtrTOj4BaMWBeX0gjuH/view?usp=drive_link





8) KODE 8

    a. Nama Program dan Deskripsi 
        Nama Program : Antrean linear berbasis array
        Deskripsi : Program ini merupakan implementasi dasar dari struktur data Queue menggunakan array dengan ukuran tetap (fixed-size). Fungsinya adalah untuk mengelola sekumpulan data integer dengan aturan FIFO (First-In-First-Out). Program ini dilengkapi dengan fungsi manajemen antrean seperti pengecekan kondisi kosong/penuh, penambahan data (enqueue), penghapusan data (dequeue), dan pembersihan memori sederhana.

    b. Screenshoot





    c. Penjelasan Program

#define MAX 5: Menentukan batas maksimal elemen yang dapat ditampung oleh array dalam antrean.

Queue(): Konstruktor yang mengatur nilai awal front dan rear menjadi -1 untuk menandakan antrean kosong.

isEmpty(): Fungsi yang memeriksa apakah nilai front masih di posisi -1.

isFull(): Fungsi yang memeriksa apakah nilai rear sudah mencapai batas indeks maksimal array.

enqueue(int x): Menambahkan data ke indeks rear yang telah digeser maju, serta mengatur front ke posisi 0 jika itu adalah data pertama.

dequeue(): Mengambil data dari indeks front dan menggeser penanda front maju. Jika antrean menjadi kosong, posisi di-reset ke -1.

display(): Melakukan iterasi dari indeks front hingga rear untuk mencetak seluruh elemen yang ada dalam antrean.

    d. Link Source Code
https://drive.google.com/file/d/1KuDBFIoBpNwAP6Vveyj4aBdXQvh-0PqR/view?usp=drive_link





9) KODE 9

    a. Nama Program dan Deskripsi
        Nama Program : Program Antrean Menggunakan Linked List.
        Deskripsi : Berbeda dengan array yang memiliki kapasitas terbatas, program ini menggunakan Linked List untuk mengelola antrean secara dinamis. Kelebihannya adalah memori hanya akan digunakan saat ada data yang masuk, sehingga ukuran antrean tidak perlu ditentukan di awal dan bisa bertambah selama memori komputer masih tersedia.

    b. Screenshoot







    c. Penjelasan Program

struct Node: Membuat tipe data bentukan yang terdiri dari variabel data untuk menyimpan nilai dan pointer next untuk menghubungkan ke node selanjutnya.

Queue(): Mengatur pointer front dan rear ke NULL untuk menandakan antrean benar-benar kosong saat objek pertama kali dibuat.

isEmpty(): Mengecek status antrean cukup dengan melihat apakah pointer front masih menunjuk ke NULL atau tidak.

enqueue(int x): Membuat node baru menggunakan kata kunci new. Jika antrean kosong, node baru menjadi front sekaligus rear. Jika sudah ada isi, node baru diletakkan setelah rear lama dan posisi rear diperbarui.

dequeue(): Menghapus node yang ditunjuk oleh front. Pointer front kemudian digeser ke node berikutnya. Menggunakan perintah delete untuk membebaskan memori yang digunakan oleh node tersebut.

display(): Melakukan penelusuran (traversing) mulai dari node front menyusuri pointer next sampai menemukan NULL, sambil mencetak setiap nilai datanya.

    d. Link Source Code
https://drive.google.com/file/d/1kib01i5vzOcFynthb33kInwWEPiQ2vCv/view?usp=drive_link










-----------------------------------------------------------------------------------------------------------------------

Itu dia implementasi kodingan saya untuk tugas kali ini. Saya sadar ini masih jauh dari sempurna, jadi mohon koreksinya jika ada kesalahan. 

Let’s discuss in the comments if you have any thoughts. 

                                                                                                                                     Thankyou, ciao!

Komentar

Postingan populer dari blog ini

TUGAS PERTEMUAN 6_STRUKTUR DATA (D)

TUGAS PERTEMUAN 2_STRUKTUR DATA (D)

TUGAS PERTEMUAN 3_STRUKTUR DATA (D)