Selasa, 27 Februari 2018

2 - Implementation of Linked List - Rio Rafelino - 2101651786

Pada intinya linked list itu merupakan list yang data yang tiap list nya ditandai dengan pointer yang mengarah ke list selanjutnya.

jika dalam konsep array, 
misal char array[100], 
maka array tersebut akan membooking 100 alamat memori setelahnya,  hal ini menyebabkan dis efisiensi memori karena belum tentu semua dari 100 alamat memori tersebut terpakai.

untuk lebih mengefektifkan memori, maka diciptakan konsep linked list, dimana setelah list pertama dibuat, jika dikemudian saat butuh list selanjutnya, maka tinggal ditandai dengan pointer yang menghubungkan ke alamat memori list pertama.

penandaan linked list pertama diberi *head, kemudian bisa ditambahkan lanjutannya spt pd gambar dibawah ini...


bisa juga dihapus seperti gambar dibwah ini...

dalam konsep linked list, dikenal istilah circular single linked list dimana node terakhir diberi pointer yang mengarah ke node pertama.
dalam hal ini keuntungannya adalah tidak ada node berisi NULL



semua yang telah dijelaskan diatas adalah konsep dari Single Linked List dimana hanya head yg didefinisikan
Pada Double Linked List, head dan tail didefinisikan, selain itu konsep logika insert deletenya sama.

Selasa, 20 Februari 2018

1 - Array and Linked List - Rio Rafelino - 2101651786

Pada pertemuan hari ini kami mereview dan mempelajari beberapa hal baru mengenai Data Structures

Data Structures adalah kumpulan data yang bisa berbentuk array, struct, linked list, queque, stacks, binary trees dan disimpan dalam memori komputer, bersifat dynamic storing..

1. Array: sebuah kumpulan dari elemen data yang bertipe sama (homogen), masing- masing elemen disimpan dalam indeks, dan index nya bermula dari 0

berikut gambar contoh mengenai array yang saya buat sendiri

array bisa berbentuk one dimensional array, two dimensional array, dan multi dimensional array..

contoh two dimensional array:
int nomorkursi[100][20]
(angka 100 menunjukan sumbu y, angka 20 sebagai sumbu x)

2. Pointer: variabel yang menyimpan alamat dari sebuah nilai.

saat kita mendeclare suatu nilai misal int x=0, maka 0 akan menempati suatu alamat pada sel memori,

nah jika kita ingin menggunakan nilai 0 ini kembali, maka kita dapat memanggil alamatnya dengan cara &x, simbol "&" disini yaitu suatu penulisan dalam pointer yang berarti perintah "woy visual express, ambilin nilai pada alamat x dong!" sehingga akan lebih efisien dalam penggunaan memori.

namun perlu diingat declare nilainya harus ada format khususnya, berikut:

int a
int *x=0 (menggunakan bintang)

a=&x

3. Queque (antrian): suatu kumpulan data dimana penambahan elemen hanya bisa dilakukan pada satu ujung (tail) dan pengambilan/penghapusan elemen dimulai dari ujung satunya (head). menggunakan prinsip FIFO (first in, first out) seperti pada shuttlecock badminton.

berikut ilustrasi yang saya buat sendiri..

4. Stacks (tumpukan):Pertama masuk, terakhir keluar. masuk terakhir, keluar pertama. stacks ini mirip dengan queque namun kebalikannya, menggunakan prinsip tumpukan seperti tumpukan karung beras, tentu yang diambil yang paling atas (yang terakhir ditaruh).

5. Binary Tree
struktur data dimana setidaknya tiap node memiliki 2 anak data.


PERTANYAAN TAMBAHAN (update 20 Februari 2018, 22.41)
1. Berapa banyak jumlah maksimal dimensi dari sebuah array?

Secara teori tidak ada batas, namun secara praktek, batasannya adalah ukuran memori komputer itu sendiri dan compiler yang digunakan (sumber: http://www.examveda.com/what-is-the-maximum-number-of-dimensions-an-array-in-c-may-have-c-programming-arrays-and-strings-6/)

Pada Java VM dibatasi pada 255, (sumber: https://www.quora.com/How-many-maximum-dimensions-can-an-array-have-in-C-C++-or-Java)

atau ada juga yang menyebutkan batasannya adalah 12, berdasar http://c0x.coding-guidelines.com/5.2.4.1.html



2. Apa beda dari single dan double pointer? apakah ada batasannya?

Single pointer untuk pass value,
sedangkan double pointer untuk passing alamat dari pointer yang menyimpan alamat suatu value
(sumber: https://stackoverflow.com/questions/25107039/confused-by-single-pointer-and-double-pointer-arguments-in-function-calls)

batasannya adalah 12 (sumber:http://c0x.coding-guidelines.com/5.2.4.1.html)





artikel ini telah selesai dibuat sejak 20 Februari 2018, 22.45..
namun saya masih mencari update jawaban dari pertanyaan tambahan