Arrays vs Linked Lists
Array adalah struktur data yang paling biasa digunakan untuk menyimpan koleksi elemen. Kebanyakan bahasa pengaturcaraan menyediakan kaedah untuk mengisytiharkan unsur-unsur tatasusunan dan akses dengan mudah di dalam tatasusunan. Senarai yang dipautkan, senarai yang lebih terperinci tunggal, juga merupakan struktur data yang boleh digunakan untuk menyimpan koleksi elemen. Ia terdiri daripada urutan nod dan setiap nod mempunyai rujukan kepada nod seterusnya dalam urutan.
Ditunjukkan dalam angka 1, adalah sekeping kod yang biasanya digunakan untuk mengisytiharkan dan memberikan nilai kepada array. Rajah 2 menggambarkan bagaimana tatasusunan kelihatan seperti dalam ingatan.
Kod di atas mentakrifkan satu array yang boleh menyimpan 5 integer dan mereka diakses dengan menggunakan indeks 0 hingga 4. Satu sifat penting bagi suatu array adalah bahawa keseluruhan array diperuntukkan sebagai satu blok memori dan setiap elemen mendapat ruang sendiri dalam array. Setelah array ditakrifkan, saiznya ditetapkan. Jadi, jika anda tidak pasti tentang saiz array pada masa penyusunan, anda perlu menentukan array yang cukup besar untuk berada di bahagian yang selamat. Tetapi, kebanyakan masa kita sebenarnya akan menggunakan kurang bilangan unsur daripada yang kita peruntukkan. Oleh itu, sejumlah besar memori sebenarnya sia-sia. Sebaliknya jika "array yang cukup besar" tidak cukup besar, program itu akan terhempas.
Senarai berkaitan memperuntukkan ingatan kepada unsur-unsurnya secara berasingan dalam blok ingatannya sendiri dan struktur keseluruhan diperoleh dengan menghubungkan elemen-elemen ini sebagai pautan dalam rantai. Setiap elemen dalam senarai terikat mempunyai dua bidang seperti yang ditunjukkan dalam Rajah 3. Bidang data memegang data sebenar yang disimpan dan medan seterusnya memegang rujukan kepada elemen seterusnya dalam rantai. Elemen pertama senarai yang dipaut disimpan sebagai ketua senarai yang dipautkan.
data | seterusnya |
Rajah 3: Unsur Senarai Terkait
Rajah 4 menggambarkan senarai hubungan dengan tiga elemen. Setiap elemen menyimpan data dan semua unsur kecuali yang terakhir menyimpan rujukan kepada unsur seterusnya. Unsur terakhir memegang nilai nol dalam bidang seterusnya. Mana-mana elemen dalam senarai boleh diakses dengan memulakan di kepala dan mengikuti penunjuk seterusnya sehingga anda memenuhi elemen yang diperlukan.
Walaupun susunan dan senarai berkaitan serupa dalam erti kata bahawa kedua-duanya digunakan untuk menyimpan koleksi unsur-unsur, mereka menimbulkan perbezaan kerana strategi yang mereka gunakan untuk memperuntukkan ingatan kepada unsur-unsurnya. Array memperuntukkan ingatan kepada semua elemennya sebagai blok tunggal dan saiz array perlu ditentukan semasa runtime. Ini akan membuat tatasusunan tidak cekap dalam keadaan di mana anda tidak mengetahui saiz array pada masa penyusunan. Oleh kerana senarai yang dikaitkan memperuntukkan ingatan kepada unsur-unsurnya secara berasingan, ia akan menjadi lebih cekap dalam situasi di mana anda tidak mengetahui saiz senarai pada masa penyusunan. Pengisytiharan dan mengakses unsur-unsur dalam senarai berkaitan tidak akan menjadi lurus ke hadapan berbanding dengan cara anda mengakses unsur-unsur dalam pelbagai menggunakan indeksnya.