TUGAS PERTEMUAN 8_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 dan deskripsi
          Nama program : Penulusuran linked list
          Deskripsi : Traversal adalah proses mengunjungi setiap node dalam Linked List satu per satu, mulai dari awal (head) hingga akhir (NULL).

      b. Screenshoot :



      c. Penjelasan program :

Node* current = head;: Kita menyiapkan pointer bantu bernama current dan meletakkannya di posisi awal (head). Ini penting supaya pointer head yang asli tidak berubah posisinya.

while (current != NULL): Perulangan ini akan terus berjalan selama current belum sampai ke ujung list yang ditandai dengan nilai NULL.

cout << current->data: Di setiap node yang dikunjungi, kita mengambil dan menampilkan datanya

current = current->next;: Ini adalah mesin penggeraknya. Baris ini memerintahkan pointer current untuk berpindah ke alamat node selanjutnya yang disimpan di pointer next

      d. Link source code :
https://drive.google.com/file/d/1ffoxM4LPvx60XLW9wNoD_tj2EIp92bbY/view?usp=drive_link


2)  KODE 2
      a. Nama program dan deskripsi
          Nama program : Penyisipan node di awal
          Deskripsi : Program ini berfungsi untuk menambahkan sebuah elemen baru ke dalam Linked List pada posisi paling depan (menjadi Head baru).

      b. Screenshoot :




      c. Penjelasan program :
Node* newNode = new Node();: Baris ini memesan memori di heap untuk membuat sebuah objek node baru secara dinamis.

newNode->data = 10;: Memberikan nilai (dalam hal ini angka 10) ke dalam bagian data dari node yang baru dibuat.

newNode->next = head;: Ini langkah krusial. Pointer next milik node baru diarahkan ke alamat yang saat ini ditunjuk oleh head. Artinya, node baru sekarang "mengantre" di depan node pertama yang lama.

head = newNode;: Memperbarui posisi head. Sekarang head tidak lagi menunjuk ke node lama, melainkan menunjuk ke newNode sebagai pemimpin baru di dalam list.

insertAwal(&head, int newData): Fungsi pembantu untuk membungkus logika tersebut agar bisa digunakan berkali-kali dengan input data yang berbeda.

      d. Link source code :
https://drive.google.com/file/d/1pMkhsfh1d7xnabg85_6GSTy0mOB0_Yju/view?usp=drive_link





3)  KODE 3
      a. Nama program dan deskripsi
          Nama program : Penghapusan node di awal
          Deskripsi : Fungsi ini digunakan untuk menghapus node pertama atau kepala (head) dari sebuah Linked List.

      b. Screenshoot :


      c. Penjelasan program :

Node* temp = head;: Membuat pointer sementara (temp) untuk memegang alamat node yang saat ini menjadi head. Ini wajib dilakukan karena jika head langsung dipindah, kita akan kehilangan alamat node pertama dan tidak bisa menghapusnya dari memori.

head = head->next;: Menggeser posisi head ke node urutan kedua. Dengan ini, node pertama yang lama resmi "terputus" dari rantai Linked List.

delete temp;: Menghapus node lama dari memori komputer. Di C++, memori yang dialokasikan dengan new harus dihapus manual agar tidak memenuhi RAM.

Pengecekan NULL: Dalam fungsi hapusAwal, ada tambahan logika untuk memastikan jika list sudah kosong, program tidak mencoba menghapus apa pun (mencegah crash).

      d. Link source code :
https://drive.google.com/file/d/1IdbaD1tDOWer4SOwJV1u6wJBQ0LnENIw/view?usp=drive_link





4)  KODE 4
      a. Nama program dan deskripsi
          Nama program : Pencarian data pada linked list
          Deskripsi : Program ini berfungsi untuk mencari apakah suatu nilai tertentu (disebut sebagai key) eksis di dalam Linked List.

      b. Screenshoot :



      c. Penjelasan program :

Node* current = head;: Inisialisasi pointer bantuan current di titik awal antrean.

while (current != NULL): Melakukan penelusuran selama node yang dikunjungi bukan alamat kosong.

if (current->data == key): Membandingkan data pada node saat ini dengan nilai key yang dicari.

break;: Perintah untuk langsung keluar dari perulangan begitu data sudah ditemukan agar lebih efisien.

current = current->next;: Menggeser pointer ke node selanjutnya jika data pada node sekarang belum cocok.

      d. Link source code :
https://drive.google.com/file/d/1iiEV0fX1Vnxu5ZvcC8Xjl8e6UxdycCHe/view?usp=drive_link





5)  KODE 5
      a. Nama program dan deskripsi
          Nama program : Program perubahan data
          Deskripsi : Program ini berfungsi untuk mencari node yang memiliki nilai tertentu, lalu mengubah (meng-update) nilai tersebut menjadi nilai baru.

      b. Screenshoot :



      c. Penjelasan program :

Node* current = head;: Seperti biasa, kita mulai penelusuran dari "kepala" list agar tidak ada node yang terlewat.

if (current->data == 10): Program mengecek apakah data di node sekarang sama dengan nilai yang ingin diganti (dalam contoh gambar adalah angka 10).

current->data = 100;: Jika cocok, nilai data pada node tersebut langsung ditimpa dengan nilai baru (dalam contoh adalah 100).

Efisiensi: Berbeda dengan searching yang biasanya pakai break, pada updating kita bisa membiarkan perulangan tetap berjalan jika ingin mengganti semua node yang memiliki nilai 10 (jika ada lebih dari satu).



      d. Link source code :
https://drive.google.com/file/d/1OTxpzW7Q3vUeK3sgEERiC-Tm-a0ikNs5/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)