Selasa, 09 Juli 2024

Tree

 Memahami Konsep Tree dalam Pemrograman C++

    
    Tree adalah salah satu struktur data yang sangat penting dalam ilmu komputer dan pemrograman. Tree terdiri dari node-node yang dihubungkan dengan edge (sisi), di mana satu node disebut root dan setiap node lainnya memiliki satu parent (induk) dan bisa memiliki beberapa child (anak). Tree sering digunakan dalam berbagai aplikasi, seperti pencarian informasi, pengelolaan hierarki data, dan implementasi struktur data kompleks. Dalam blog ini, kita akan membahas dasar-dasar tree, cara menambah node, menghapus node, dan melakukan traversal pada tree menggunakan bahasa pemrograman C++..

Apa itu Tree?

    Tree adalah struktur data hierarkis yang terdiri dari node-node, di mana satu node disebut root dan node lainnya memiliki satu parent dan bisa memiliki beberapa child. Tree digunakan untuk merepresentasikan hubungan hierarkis antara elemen-elemen data.

Mengapa Tree Penting?

    Tree penting karena menyediakan cara yang efisien untuk menyimpan dan mengelola data yang memiliki hubungan hierarkis. Tree memungkinkan pencarian, penambahan, dan penghapusan data dilakukan dengan cepat dan efisien.



Program Tree


    Berikut ini adalah implementasi dasar dari tree menggunakan linked list dengan berbagai operasi dasar:



  • Terdapat variabel `label` bertipe char.
  • Terdapat variabel `left`, `right`, `parent` bertipe struct Node.

1. Deklarasi


            Deklarasi dilakukan setelah penulisan struct dari Node.


            root            : merupakan elemen teratas dari sebuah tree.
            newNode   : digunakan untuk membuat node baru.


2. Membuat Elemen Pertama / Root

 
        Hal pertama yang dilakukan setelah pendeklarasian dan penulisan struct linked list adalah membuat elemen pertama dengan menggunakan method create(). Method ini digunakan hanya sekali untuk satu tree. Karena method ini, digunakan untuk membuat root dimana root adalah akar dari sebuah tree.    





3. Menambahkan Elemen Node Child Left


        Untuk menambahkan elemen node child left, kita bisa menggunakan method insertLeft() dibawah ini. Fungsi ini akan menambahkan node yang dihubungkan ke pointer left dari root. Pointer parent dari node child left yang baru akan dihubungkan ke root. Intinya, fungsi ini digunakan ketika ingin menambahkan child di sebelah kiri.





4. Menambahkan Elemen Node Child Right


        Untuk menambahkan elemen node child right, kita bisa menggunakan method insertRight() dibawah ini. Fungsi ini akan menambahkan node yang dihubungkan ke pointer right dari root. Pointer parent dari node child right yang baru akan dihubungkan ke root. Intinya, fungsi ini digunakan ketika ingin menambahkan child di sebelah kanan.






5. Memperbarui Elemen pada Tree


        Untuk memperbarui elemen pada tree, kita bisa menggunakan method update() dibawah ini. Fungsi ini akan memperbarui data yang ada pada tree, sesuai dengan parameter yang diinputkan.





6. Menghapus Elemen pada Tree


        Untuk menghapus elemen pada tree, kita bisa menghapus salah satu elemen atau semua elemen sekaligus. Jika menghapus salah satu elemen, kita bisa  menggunakan method deleteSub(). Jika ingin menghapus semua elemen tree, kita bisa menggunakan method clear(). Fungsi deleteSub() dan fungsi clear() didalamnya menggunakan fungsi deleteTree(). Fungsi deleteTree() digunakan untuk rekursif penghapusan node-nya.






7. Menampilkan Elemen dengan PreOrder


        Untuk menampilkan elemen dengan cara PreOrder, kita bisa meggunakan method preOrder() dibawah ini. Pada preOrder, elemen yang akan tampil berurutan yaitu root-left-right.





8. Menampilkan Elemen dengan InOrder


        Untuk menampilkan elemen dengan cara inOrder, kita bisa meggunakan method inOrder() dibawah ini. Pada inOrder, elemen yang akan tampil berurutan yaitu left-root-right.






9. Menampilkan Elemen dengan PostOrder


        Untuk menampilkan elemen dengan cara postOrder, kita bisa meggunakan method postOrder() dibawah ini. Pada postOrder, elemen yang akan tampil berurutan yaitu left-right-root.




10. Program Main


        Pada program main, terlebih dahulu kita buat root dengan cara menggunakan method create(). Setelah itu kita bisa deklarasi variabel pointer child node bertipe Node. Lalu kita bisa inisialisasi node sesuai penempatannya left atau right sekaligus mengisi parameter dengan nama label dan child dari node apa.






Kesimpulan



            Tree adalah struktur data yang sangat penting dalam pemrograman karena kemampuannya untuk mengelola data yang memiliki hubungan hierarkis dengan efisien. Implementasi di atas memberikan dasar untuk memahami dan menggunakan tree dalam pemrograman C++. Struktur data ini sangat penting dalam pencarian informasi, pengelolaan hierarki data, dan banyak lagi.


Senin, 08 Juli 2024

Queue

Memahami Konsep Queue dalam Pemrograman C++

    
    Queue adalah salah satu struktur data yang fundamental dalam ilmu komputer dan pemrograman. Berbeda dengan Stack yang menggunakan prinsip LIFO (Last In First Out), Struktur data ini menggunakan prinsip FIFO (First In, First Out), di mana elemen yang pertama dimasukkan adalah yang pertama keluar. Dalam blog ini, kita akan membahas dasar-dasar queue, cara menambah elemen (enqueue), menghapus elemen (dequeue), serta menampilkan elemen dan operasi lainnya pada queue menggunakan bahasa pemrograman C++.


Apa itu Queue?


    Queue adalah struktur data linear yang menggunakan prinsip FIFO. Ini berarti elemen yang pertama dimasukkan ke dalam queue adalah elemen yang pertama kali dihapus. Queue sering digunakan dalam berbagai aplikasi, termasuk manajemen antrian di sistem operasi, pemrosesan data streaming, dan implementasi buffer.

Mengapa Queue Penting?


    Queue penting karena menyediakan cara yang efisien untuk mengelola data dalam urutan yang terorganisir. Queue memastikan bahwa data diproses dalam urutan yang tepat, yang penting dalam banyak algoritma dan sistem antrian nyata.


Program Queue


    Pada implementasi Queue, kita menggunakan single linked list dengan berbagai operasi dasar, karena dengan single linkedlist kita bisa lebih mudah dalam memprogram:



  • Terdapat variabel `num` bertipe integer dan variabel `data` bertipe string.
  • Terdapat variabel `next` bertipe pointer dari struct Node.

1. Deklarasi

            Deklarasi dilakukan setelah penulisan struct dari Node.




            head           : adalah kepala / elemen pertama dari elemen linked list.
            tail              : adalah ekor / elemen terakhir dari elemen linked list.
            current       : digunakan pada fungsi seperti display, count, dan untuk transversing.
            newNode   : digunakan pada fungsi membuat node baru.
            del             : digunakan untuk membuat duplikat elemen yang akan dihapus.
            before        : digunakan pada fungsi delete.

            Pada bab Queue ini, kita menggunakan variabel maksimal agar kita dapat mengetahui berapa maksimal antrian yang ada pada queue.


2. Menambahkan Elemen Queue

 
        Hal pertama yang dilakukan setelah pendeklarasian dan penulisan struct linked list adalah membuat elemen dengan menggunakan method enqueue(). Pada queue, untuk membuat elemen baru atau setelahnya, kita menggunakan method enqueue. Pada method enqueue, elemen yang ditambahkan pertama akan keluar pertama. Fungsi ini menambahkan elemen baru ke queue. Jika queue kosong, elemen baru menjadi head. Jika tidak, elemen baru ditambahkan ke akhir queue.





3. Menghapus Elemen Pertama pada Queue


        Untuk menghapus elemen pada queue, kita bisa menggunakan method dequeue() dibawah ini. Fungsi ini menghapus elemen pertama dari queue. Elemen kedua menjadi head yang baru.





4. Menghapus Semua Elemen Queue


        Untuk menghapus semua elemen pada queue, kita bisa menggunakan method destroy() dibawah ini. Fungsi ini menghapus semua elemen dari queue. Jadi, dengan fungsi ini, queue menjadi kosong.






5. Menampilkan Semua Elemen Queue


        Untuk menampilkan semua elemen pada queue, kita bisa menggunakan method print() dibawah ini. Fungsi ini menampilkan semua elemen dalam queue. Jika ada posisi yang kosong dalam queue, posisi tersebut akan ditampilkan sebagai kosong.




6. Program Main


        Pada program main, saya mencontohkan bagaimana cara menambah dan menampilkan elemen queue sesuai pada method yang ada diatas.






Kesimpulan


            Queue adalah struktur data yang sangat berguna dalam berbagai aplikasi pemrograman karena kesederhanaan dan fleksibilitasnya. Dengan prinsip FIFO, queue memastikan bahwa data diproses dalam urutan yang benar. Implementasi di atas memberikan dasar untuk memahami dan menggunakan queue dalam pemrograman C++. Struktur data ini sangat penting dalam manajemen antrian, pemrosesan data streaming, dan banyak lagi.


Stack

Memahami Konsep Stack dalam Pemrograman C++

    
    Stack adalah salah satu struktur data yang fundamental dalam ilmu komputer dan pemrograman. Struktur data ini menggunakan prinsip LIFO (Last In, First Out), di mana elemen yang terakhir dimasukkan adalah yang pertama keluar. Dalam blog ini, kita akan membahas dasar-dasar stack, cara menambah elemen (push), menghapus elemen (pop), serta menampilkan elemen dan operasi lainnya pada stack menggunakan bahasa pemrograman C++.


Apa itu Stack?


    Stack adalah struktur data linear yang menggunakan prinsip LIFO. Elemen yang terakhir dimasukkan ke dalam stack adalah elemen yang pertama kali dihapus. Stack sering digunakan dalam berbagai aplikasi, termasuk pemrosesan fungsi rekursif, undo-redo pada aplikasi, dan evaluasi ekspresi aritmatika.

Mengapa Stack Penting?


    Stack penting karena menawarkan cara yang sederhana namun kuat untuk mengelola data sementara dan memastikan urutan operasi yang benar. Dengan menggunakan stack, pemrogram dapat memastikan bahwa data diproses dalam urutan yang benar, yang penting dalam banyak algoritma dan struktur data lainnya.


Program Stack


    Pada implementasi stack, kita menggunakan double linked list dengan berbagai operasi dasar, karena dengan double linkedlist kita bisa lebih mudah dalam memprogram:



  • Terdapat variabel `num` bertipe integer dan variabel `data` bertipe string.
  • Terdapat variabel `prev` dan `next` bertipe pointer dari struct Node.

1. Deklarasi


            Deklarasi dilakukan setelah penulisan struct dari Node.





            head           : adalah kepala / elemen pertama dari elemen linked list.
            tail              : adalah ekor / elemen terakhir dari elemen linked list.
            current       : digunakan pada fungsi seperti display, count, dan untuk transversing.
            newNode   : digunakan pada fungsi membuat node baru.
            del             : digunakan untuk membuat duplikat elemen yang akan dihapus.
            before        : digunakan pada fungsi delete.

            Pada bab Stack ini, kita menggunakan variabel maksimal agar kita dapat mengetahui berapa maksimal tumpukan yang ada pada stack.


2. Menambahkan Elemen Stack

 
        Hal pertama yang dilakukan setelah pendeklarasian dan penulisan struct linked list adalah membuat elemen dengan menggunakan method push. Pada stack, untuk membuat elemen baru atau setelahnya, kita menggunakan method push. Pada method push, elemen yang ditambahkan terakhir pasti akan menjadi elemen pertama keluar. 





3. Menghapus Elemen 


        Untuk menghapus elemen pada stack, kita bisa menggunakan method pop() dibawah ini. Elemen yang terhapus yaitu elemen tail atau elemen yang terakhir ditambahkan/dibuat. Karena stack bersifat LIFO yaitu Las In First Out.






4. Menampilkan Semua Elemen


        Untuk menampilkan semua elemen pada stack, kita bisa menggunakan method display() dibawah ini. Elemen yang tampil akan berurutan yaitu dari elemen terakhir yang ditambahkan ke elemen pertama yang ditambahkan.





5. Menampilkan Elemen Tertentu


        Untuk menampilkan elemen tertentu pada stack, kita bisa menggunakan method peek() dibawah ini. Jadi, dengan method peek(), kita bisa menampilkan elemen mana yang ingin ditampilkan. Dengan urutan elemen pertama adalah elemen yang terakhir ditambahkan.







6. Mengubah Elemen Tertentu


        Untuk mengubah elemen tertentu pada stack, kita bisa menggunakan method change() dibawah ini. Misalnya, jika ada elemen yang ingin diganti, kita bisa menggunakan method ini dengan cara memasukkan parameter berupa elemen ke-berapa yang ingin diganti.






7. Menghapus Semua Elemen 


        Untuk menghapus semua elemen pada stack, kita bisa menggunakan method destroy() dibawah ini. Jadi, dengan menggunakan method destroy() tidak ada elemen stack yang tersisa.




8. Program Main 


        Pada program main, saya mencontohkan bagaimana cara menambah dan menampilkan elemen sesuai pada method yang ada diatas.





Kesimpulan


            Stack adalah struktur data yang sangat berguna dalam berbagai aplikasi pemrograman karena kesederhanaan dan fleksibilitasnya. Dengan prinsip LIFO, stack memastikan bahwa data diproses dalam urutan yang benar. Implementasi di atas memberikan dasar untuk memahami dan menggunakan stack dalam pemrograman C++. Struktur data ini sangat penting dalam pengelolaan memori, pemrosesan fungsi rekursif, dan banyak lagi.

            Demikian program Stack dasar, yang perlu diingat adalah program Stack menggunakan prinsip LIFO atau Last In First Out, semoga bisa membantu teman-teman dalam memahami apa itu stack lebih dalam.

Jumat, 05 Juli 2024

Double Linked List

Memahami Konsep Double Linked List dalam Pemrograman C++


    Double Linked List adalah salah satu struktur data yang fundamental dalam ilmu komputer dan pemrograman. Struktur data ini memberikan fleksibilitas tambahan dibandingkan single linked list karena setiap node memiliki dua pointer: satu menunjuk ke node berikutnya dan satu lagi menunjuk ke node sebelumnya. Dalam blog ini, kita akan membahas dasar-dasar double linked list, cara menambah elemen di depan, belakang, dan tengah, serta menghapus elemen dari depan, belakang, dan tengah.


Pengertian Double Linked List


Apa itu Double Linked List?


    Double linked list adalah kumpulan node yang setiap node-nya terdiri dari tiga bagian: data, pointer ke node berikutnya, dan pointer ke node sebelumnya. Ini memungkinkan traversal (penjelajahan) dalam dua arah, baik maju maupun mundur.

Mengapa Double Linked List Penting?


    Double linked list penting karena memungkinkan operasi yang lebih fleksibel dibandingkan single linked list. Dengan dua pointer, traversal dalam dua arah dimungkinkan, membuat operasi seperti penyisipan dan penghapusan node di tengah menjadi lebih efisien. Ini berguna dalam berbagai aplikasi pemrograman, termasuk implementasi deques (double-ended queues), undo-redo features, dan manajemen memori dinamis.


Program Double Linked List


    Berikut adalah program double linked list yang saya buat sendiri, jadi saya akan mencoba menjelaskan secara maksimal agar teman-teman dapat memahaminya.

Pertama, yang harus dibuat adalah struct dari double linkedlist.




  • Terdapat variabel `num` bertipe integer dan variabel `data` bertipe string.
  • Terdapat variabel `prev` dan `next` bertipe pointer dari struct Node.

1. Deklarasi


            Deklarasi dilakukan setelah penulisan struct dari Node.




            head           : adalah kepala / elemen pertama dari elemen linked list.
            tail              : adalah ekor / elemen terakhir dari elemen linked list.
            current       : digunakan pada fungsi seperti display, count, dan untuk transversing.
            newNode   : digunakan pada fungsi membuat node baru.
            del             : digunakan untuk membuat duplikat elemen yang akan dihapus.
            before        : digunakan pada fungsi delete.



2. Membuat Elemen Double Linked List

 
        Hal pertama yang dilakukan setelah pendeklarasian dan penulisan struct linked list adalah membuat elemen dengan menggunakan method create.






3. Menambah Elemen di Depan


        Setelah membuat node baru dengan menggunakan method create, kita anggap sturct linked list sudah terdapat elemen minimal 1. Setelah itu jika ingin menambah elemen dari depan atau sebelum head, kita bisa menggunakan method addFirst dibawah ini. 







4. Menambah Elemen di Tengah


    Selain menambah elemen di depan, kita juga bisa menambah elemen di tengah linkedlist.
Kita bisa menggunakan method addMid dibawah ini.





5. Menambah Elemen di Belakang


        Selain menambah elemen di depan dan di tengah, kita juga bisa menambah elemen di belakang atau setelah tail. Jadi elemen yang kita tambahkan akan otomatis menjadi elemen terakhir pada linkedlist. Kita bisa menggunakan method addLast dibawah ini.





6. Menghapus Elemen di Depan


        Untuk menghapus elemen depan, kita bisa menggunakan method deleteFirst dibawah ini. 








7. Menghapus Elemen di Tengah

        Untuk menghapus elemen di tengah, kita bisa menggunakan method deleteMiddle dibawah ini.






8. Menghapus Elemen di Akhir


        Untuk menghapus elemen di akhir, kita bisa menggunakan method deleteLast dibawah ini.







9. Mengubah Isi Elemen


        Untuk mengubah isi elemen, sama seperti add dan delete. Terdapat 3 metode yaitu changeFirst, changeMid, dan changeLast. Berikut ketiga metode change.







10. Display


        Untuk menampilkan isi elemen linkedlist, kita bisa menggunakan tramsversing seperti berikut.







11. Count


        Untuk menghitung berapa banyak elemen yang ada pada linkedlist, kita bisa menggunakan method count dibawah ini.









        Demikian program single linked list dasar, semoga dapat mmebantu teman-teman yang sedang ingin mempelajari struktur data ini.


Minggu, 30 Juni 2024

Single Linked List

Memahami Konsep Single Linked List dalam Pemrograman C++

    Single Linked List adalah salah satu struktur data yang fundamental dalam ilmu komputer dan pemrograman. Struktur data ini sering digunakan karena fleksibilitasnya dalam pengelolaan memori dan kemampuannya untuk menyimpan koleksi data yang dinamis. Dalam blog ini, kita akan membahas dasar-dasar single linked list, cara menambah elemen di depan dan belakang, menghapus elemen dari depan dan belakang, serta menambah dan menghapus elemen dari tengah.

1. Pengertian Single Linked List


Apa itu Single Linked List?


Single Linked List adalah struktur data linear yang terdiri dari serangkaian elemen yang disebut node. Setiap node berisi dua komponen:
  1. Data: Nilai atau informasi yang disimpan dalam node.
  2. Pointer: Penunjuk atau referensi ke node berikutnya dalam daftar.
Berikut adalah representasi dasar dari single linked list:



  •  Terdapat variabel `num` bertipe  integer dan variabel `data` bertipe string.
  •  Terdapat variabel next bertipe pointer dari struct Node.

Mengapa Menggunakan Single Linked List?

Linked list menawarkan beberapa kelebihan dibandingkan dengan array:
  • Ukuran Dinamis: Tidak perlu menentukan ukuran di awal.
  • Mudah dalam Penyisipan dan Penghapusan: Elemen dapat dengan mudah ditambahkan atau dihapus tanpa perlu menggeser elemen lainnya.


2. Deklarasi 

        Deklarasi dilakukan setelah penulisan struct dari Node.
    

        head           : adalah kepala / elemen pertama dari elemen linked list.
        tail              : adalah ekor / elemen terakhir dari elemen linked list.
        current       : digunakan pada fungsi seperti display, count, dan untuk transversing.
        newNode   : digunakan pada fungsi membuat node baru.
        del             : digunakan untuk membuat duplikat elemen yang akan dihapus.
        before        : digunakan pada fungsi delete.

3. Membuat Elemen Single Linked List


        Hal pertama yang dilakukan setelah pendeklarasian dan penulisan struct linked list adalah membuat elemen dengan menggunakan method create.




    


4. Menambah Elemen di Depan


        Setelah membuat node baru dengan menggunakan method create, kita anggap sturct linked list sudah terdapat elemen minimal 1. Setelah itu jika ingin menambah elemen dari depan atau sebelum head, kita bisa menggunakan method addFirst dibawah ini. 







5. Menambah Elemen di Tengah


    Selain menambah elemen di depan, kita juga bisa menambah elemen di tengah linkedlist.
Kita bisa menggunakan method addMid dibawah ini.







6. Menambah Elemen di Belakang


        Selain menambah elemen di depan dan di tengah, kita juga bisa menambah elemen di belakang atau setelah tail. Jadi elemen yang kita tambahkan akan otomatis menjadi elemen terakhir pada linkedlist. Kita bisa menggunakan method addLast dibawah ini.







7. Menghapus Elemen di Depan


        Untuk menghapus elemen depan, kita bisa menggunakan method deleteFirst dibawah ini. 






8. Menghapus Elemen di Tengah

        Untuk menghapus elemen di tengah, kita bisa menggunakan method deleteMiddle dibawah ini.





9. Menghapus Elemen di Akhir


        Untuk menghapus elemen di akhir, kita bisa menggunakan method deleteLast dibawah ini.






10. Mengubah Isi Elemen


        Untuk mengubah isi elemen, sama seperti add dan delete. Terdapat 3 metode yaitu changeFirst, changeMid, dan changeLast. Berikut ketiga metode change.








11. Display


        Untuk menampilkan isi elemen linkedlist, kita bisa menggunakan tramsversing seperti berikut.






12. Count


        Untuk menghitung berapa banyak elemen yang ada pada linkedlist, kita bisa menggunakan method count dibawah ini.




13. Main Program



        Untuk menjalankan program, pada bagian main, kita bisa isi seperti berikut ini, sehingga outputnya menjadi seperti berikut.






       


        Demikian program single linked list dasar, semoga dapat mmebantu teman-teman yang sedang ingin mempelajari struktur data ini.




Tree

 Memahami Konsep Tree dalam Pemrograman C++           Tree adalah salah satu struktur data yang sangat penting dalam ilmu komputer dan pemro...