Struktur data: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
kTidak ada ringkasan suntingan |
k Perbaiki ejaan, tata bahasa, dan nada bahasa |
||
(50 revisi perantara oleh 36 pengguna tidak ditampilkan) | |||
Baris 1:
{{rapikan}}
Dalam istilah [[ilmu komputer]], '''struktur data''' adalah cara menyimpan dan mengatur data secara terstruktur pada sistem komputer atau [[pangkalan data]] (''database'') sehingga lebih mudah diakses. Secara teknis, data dalam bentuk angka, huruf, simbol, dan lainnya ini diletakkan dalam kolom-kolom dan susunan tertentu. Contoh struktur data dapat dilihat pada berkas-berkas [[lembar sebar]] (''spreadsheet''), pangkalan data, [[pengolah kata]], [[pemampatan citra|citra yang dipampat]] (''compressed image''), dan pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data.
Dalam teknik [[pemrograman]], struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang
== Penggunaan ==
== Daftar struktur data umum ==▼
Struktur data adalah basis dari [[tipe data abstrak]]. Tipe data abstrak mendefinisikan bentuk logis dari sebuah tipe data, sementara struktur data mengimplementasikan bentuk fisik dari tipe data tersebut.<ref>{{cite web |title=Abstract Data Types |url=https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/ADT.html |website=Virginia Tech - CS3 Data Structures & Algorithms}}</ref>
Masing-masing jenis struktur data yang berbeda cocok untuk penggunaan-penggunaan yang berbeda, dan beberapa jenis memang dispesialisakian untuk tugas tertentu. Contohnya, [[basis data relasional]] biasanya menggunakan indeks B-tree untuk data retrieval,<ref>{{cite book|chapter-url=http://searchsecurity.techtarget.com/generic/0,295582,sid87_gci1184450,00.html|title=Beginning Database Design|isbn=978-0-7645-7490-0|author=Gavin Powell|chapter=Chapter 8: Building Fast-Performing Database Models|publisher=[[Wrox Press|Wrox Publishing]]|year=2006}}</ref> sedangkan implementasi [[kompilator]] biasanya menggunakan tabel hash untuk menemukan pengidentifikasi.<ref>{{cite web |title=1.5 Applications of a Hash Table |url=http://www.cs.uregina.ca/Links/class-info/210/Hash/ |website=University of Regina - CS210 Lab: Hash Table |access-date=2020-03-25 |archive-date=2020-03-25 |archive-url=https://web.archive.org/web/20200325084342/http://www.cs.uregina.ca/Links/class-info/210/Hash/ |dead-url=yes }}</ref>
# [[Tree (Struktur data)|Tree]]▼
Struktur data memberikan cara mengelola data yang banyak secara efisien untuk berbagai penggunaan, misalnya untuk [[basis data]] yang besar dan layanan pengindeksan internet. Biasanya, struktur data yang efisien adalah kunci untuk mendesain [[algoritme]] yang efisien. Beberapa metode desain formal dan [[bahasa pemrograman]] menekankan struktur data, bukan pada algoritma, sebagai faktor kunci dalam mengatur desain [[perangkat lunak]]. Struktur data bisa digunakan untuk mengatur penyimpanan dan pengambilan informasi yang disimpan baik di dalam [[Penyimpanan data komputer#Penyimpanan primer|memori utama]] maupun [[Penyimpanan data komputer#Penyimpanan sekunder|memori sekunder]].<ref>{{cite web |title=When data is too big to fit into the main memory |url=http://homes.sice.indiana.edu/yye/lab/teaching/spring2014-C343/datatoobig.php |website=homes.sice.indiana.edu |access-date=2020-03-25 |archive-date=2021-04-27 |archive-url=https://web.archive.org/web/20210427095924/http://homes.sice.indiana.edu/yye/lab/teaching/spring2014-C343/datatoobig.php |dead-url=yes }}</ref>
== Contoh ==
Ada banyak jenis struktur data, yang biasanya dibuat dari tipe data primitif yang lebih sederhana:<ref>{{Cite book|title=Data structures|last=Seymour|first=Lipschutz|date=2014|publisher=McGraw Hill Education|isbn=9781259029967|edition=Revised first|location=New Delhi, India|oclc=927793728}}</ref>
* ''[[Larik]]'' ({{asal kata|Inggris|array}}) adalah serangkaian elemen dengan urutan tertentu, biasanya semua elemen memiliki tipe yang sama (tergantung bahasanya, masing-masing elemen bisa harus bertipe sama, atau bisa bertipe apa saja). Setiap elemen bisa diakses menggunakan indeks [[bilangan bulat]] yang menentukan elemen mana yang diminta. Implementasinya biasanya mengalokasikan ''word'' memori yang berdampingan untuk elemen-elemen larik (tapi tidak selalu harus begitu). Larik bisa punya panjang yang tetap ataupun ''resizable''.
* ''[[Senarai berantai]]'' ({{asal kata|Inggris|linked list}}) (kadang disebut juga ''senarai'') adalah koleksi linear yang terdiri dari elemen-elemen data berjenis apapun, yang disebut ''node'', di mana setiap ''node'' memiliki sebuah nilai, serta menunjuk ke ''[[Node.js|node]]'' berikutnya di senarai berantai. Keuntungan utama dari senarai berantai dibandingkan dengan larik, adalah nilai-nilainya bisa dimasukkan dan dikeluarkan secara efisien tanpa memindahkan sisa isi senarai. Namun, untuk operasi-operasi lain, seperti melakukan akses acak terhadap elemen tertentu, senarai lebih lambat dibandingkan dengan larik.
* ''[[Record]]'' (disebut juga ''tuple'' atau ''struct'') adalah struktur data agregat. Sebuah ''record'' adalah sebuah nilai yang berisi nilai-nilai lain, biasanya dengan banyak dan urutan nilai yang tetap serta diindeks menggunakan nama. Elemen-elemen ''record'' biasanya disebut ''field'' atau ''member''.
* ''Union'' adalah struktur data yang menentukan sejumlah tipe data yang boleh disimpan dalam instansinya, misalkan ''float'' atau ''long integer''. Bebeda dengan ''[[record]]'', yang misalnya bisa didefinisikan menampung sebuah ''float'' dan sebuah ''integer''; ''union'' hanya menampung satu data pada suatu waktu. Ruang yang dialokasikan untuk ''union'' harus cukup untuk menampung tipe data terbesar anggotanya.
* ''Tagged union'' (disebut juga ''variant'', ''variant record'', ''discriminated union'', atau ''disjoint union'') menampung ''field'' tambahan yang menandakan tipenya pada saat ini, agar meningkatkan keamanan tipe.
* [[Objek (ilmu komputer)|''Objek'']] adalah struktur data yang menampung ''field'' data, seperti ''record'', dan juga mengandung metode yang mengoperasikan isi datanya. Sebuah objek adalah sebuah instansi dalam-memori dari sebuah kelas. Dalam konteks [[pemrograman berorientasi objek]], ''record'' dikenal sebagai ''plain old data structure'' untuk membedakannya dengan objek.<ref>{{cite web|url=http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html |accessdate=6 December 2016 |title=C++ Language Note: POD Types |author=Walter E. Brown |publisher=[[Fermi National Accelerator Laboratory]] |date=September 29, 1999|archive-url=https://web.archive.org/web/20161203130543/http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html|archive-date=2016-12-03}}</ref>
Data struktur lainnya yang umum digunakan, diantaranya adalah [[Tumpukan (struktur data)|tumpukan]] ({{asal kata|Inggris|stack}}), [[Antrean (struktur data)|antrean]] ({{asal kata|Inggris|queue}}), dan [[Pohon (struktur data)|pohon]] ({{asal kata|Inggris|tree}}).
== Referensi ==
{{Reflist}}
== Pranala luar ==
* [https://web.archive.org/web/20050624234059/http://www.nist.gov/dads/ Deskripsi] dari ''Dictionary of Algorithms and Data Structures''
|