01 - ARRAY & LINKED LIST - 2101627572 - JEREMIA ALFANANDA


DATA STRUCTURE
ARRAY & LINKED LIST

Pertemuan pertama kali ini membahas tenyang ARRAY & LINKED LIST yang mungkin akan bermanfaat dalam materi DATA STRUCTURE  yang nanti akan kita pelajari bersama.


Apakah itu Array?


Array adalah kumpulan data yang memiliki tipe data yang sama (misalkan : int, char float). Karena itu array bersifat homogen. Untuk meinisialisasikan array, kita harus menuliskan jumlah index dari array tersebut.
Contoh: int Array[10]   <~~ Dalam hal ini kita membuat 10 kotak yang dapat diisi dengan tipe data integer.
            char Array2[10]   <~~ Dalam hal ini kita membuat 10 kotak yang dapat diisi dengan tipe data char.

Bagaimana cara mengakses nilai dalam array?



Seperti yang sudah kita tahu bahwa Array memiliki index yang menunjukkan berapa kotak yang tersedia dari array tersebut. Untuk index pertama / data pertama dari suatu array dimulai dengan [0]. Sehingga untuk menggakses nilai pertamanya, perlu dituliskan array[0]. Batas indexnya adalah (n-1) dengan n adalah jumlah kotak yang tersedia.

Contoh: int Array[10] <~~~ Tersedia 10 kotak yang berisi integer
             Untuk mengakses nilai pertama dari Array tersebut dapat kita tuliskan:
             Array[0] <~~~ Untuk mengakses nilai pertama dari array.
             Array[1] <~~~ Untuk mengakses nilai kedua dari array.
             Array[9] <~~~ Untuk mengakses nilai kesepuluh dari array.

Sebuah Array juga dapat memiliki 2 index, atau biasa disebut dengan array 2-D. Dalam ini, kita dapat menganggap array tersebut memiliki kotak kesamping (baris) dan kotak kebawah (kolom).
Untuk dapat menginisialisasikan array tersebut, kita hanya perlu menambahkan indexnya.
Contoh: int Array[10][5] <~~~ Array memiliki 10 kotak kebawah dan 5 kotak kesamping. 

Untuk dapat mengakses nilainya pun sama seperti array 1-D, kita hanya perlu menuliskan indexnya. Index pertama juga dimulai dari 0, dan diakhiri dengan (n-1) dari jumlah kotak.
Selain itu array juga dapat memiliki 3 index dan selanjutnya. 

Nilai-nilai data di suatu larik disebut dengan elemen-elemen larik.
Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.
Menurut dimensinya, array dapat dibedakan menjadi :
1.      Array berdimensi satu
o       Setiap elemen array dapat diakses melalui index
o       Index array secara default dimulai dari 0
o       Deklarasi array :
Tipe_array nama_array[ukuran]

2.      Array berdimensi dua
          Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah buah kolom. Bentuknya dapat berupa matriks atau tabel.
          Deklarasi array :
Tipe_array nama_array [baris][kolom]

3.      Array multidimensi
          Array multidimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan deklarasi array dimensi satu maupun dimensi dua.
          Deklarasi array :
Tipe_array nama_array [ukuran 1][ukuran 2] . . . [ukuran N]




LINKED LIST

Linked List adalah suatu struktur data linier. Berbeda dengan array yang juga merupakan struktur data linier dan tipe data komposit, linked list dibentuk secara dinamik. Pada saat awal program dijalankan elemen linked list belum data. Elemen linked list (disebut node) dibentuk sambil jalan sesuai instruksi. Apabila setiap elemen array dapat diakses secara langsung dengan menggunakan indeks, sebuah node linked list diakses dengan menggunakan pointer yang mengacu (menunjuk) ke node tersebut. Awal atau kepala linked list harus diacu sebuah pointer yang biasa diberi nama head. Pointer current (disingkat curr) digunakan untuk memindahkan pengacuan kepada node tertentu.


Apa itu Link List?


Sebelum mengetahui apa itu Link List, saya akan memberitahu sedikit mengenai Struct.
Struct adalah tipe data abstrak yang dapat menyimpan lebih dari satu tipe data (dapat di sebut heterogen).

Setelah mengetahui sedikit mengenai struct, kita akan membahas dasar mengenai Link List.
Link List merupakan beberapa struct yang saling terhubung. Sama seperti array, link list berguna agar kita dapat mengakses data kita yang ada didalam list.
Pada Link List terdapat struct yang menyimpan data berupa int, char, dan lainnya sesuai yang kita butuhkan.
selain itu link list juga terdapat (next) yang menyimpan alamat dari data selanjutnya. Setiap kumpulan data/nilai dan next tersebut (node). Sehingga setiap node akan menyimpan kumpulan nilai maupun character dan alamat node selanjutnya. Nantinya node pertama akan terhubung dengan node kedua dan seterusnya.
Node pertama disebut dengan head. Ketika kita ingin mengakses node-node tersebut, kita akan mulai mengaksesnya dari head dan seterusnya. Node terakhir disebut juga tail.


Keuntungan dan Kerugian Link List vs Array
Namun sedikit perbedaan link list dan array, pada array kita dapat mengakses secara langsung dengan menyebutkan indexnya. Namun pada link list kita harus mengakses secara sequence (satu persatu) dari head ke tail (awal ke akhir). Lalu apa keunggulan link list? Keuntungan dari link list adalah jumlah memory yang terpakai dapat dibuat lebih kecil dari array.

Pada array kita menginisialisasikan index, yang artinya memory pada komputer akan menyediakan memory sebanyak jumlah index tersebut. Walaupun setiap index/kotak pada array tersebut tidak terpakai, komputer akan tetap menyediakan memory tersebut. Sehingga memory yang dibutuhkan tidak efesien.


Apakah itu Pointer?


Sesuai dengan namanya yang berarti penunjuk, pointer akan menunjuk ke suatu hal. Apakah yang ditunjuk oleh pointer? jawabannya adalah alamat dari suatu variabel / memory pada komputer.
Untuk menuliskan pointer kita akan menggunakan lambang (*) dan untuk menuliskan alamat yang variabel yang ditunjuk kita akan menggunakan lambang (&).

Contoh: void main(){
                   int *penunjuk;  <~~~ inisialisasi pointer
                   int angka = 10; <~~~ kita memiliki variabel "angka" yang mempunyai alamat
                                                    pada memory dan nilai angka adalah 10.
                   penunjuk = &angka; <~~~ penunjuk akan menunjuk / mengambil alamat dari angka
             }
Dari contoh diatas, maka penunjuk akan menunjuk alamat dari angka, sehingga nilai penunjuk akan mengikuti angka. Begitu juga bila penunjuk sudah menunjuk alamat angka, dan kita mengganti nilai angka maupun penunjuk, maka nilainya akan sama-sama berubah.



Pertanyaan

1. berapa jumlah maksimal dimensi multiple array? 
    ~ Menurut apa yang sudah saya riset jawabanya adalah 2 akan tetapi semua itu bergantung dari berapa jumlah yang kita tentukan di awal 

2. perbedaan pointer dan double pointer 
  ~ Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu lokasi alamat memori komputer tertentu.Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C. 
   ~ double pointer dapat menggunakan nilai yang berbeda dan digunakan sekaligus

No comments:

Powered by Blogger.