RESUME : FROM STATIC DATA STRUCTURE TO DYNAMIC DATA STRUCTURE Dalam ilmu komputer tentu tidak asing dengan Bahasa pemrograman, dalam Bahasa pemrograman sendiri ada istilah algoritma dan struktur data. Algoritma pemrograman adalah urutan atau langkah penyelesaian masalah dalam pemrograman komputer sedangkan struktur data adalah suatu kumpulan objek-objek data yang memiliki aturan (terorganisir) yang kemudian digolongkan berdasarkan operasi-operasi untuk memanipulasinya. Komponen yang dimuat dalam struktur data ini dapat berupa objek data elementer atau objek data terstruktur lainnya. Objek data elementer merupakan objek data yang hanya mempunyai sebuah nilai tunggal dan hanya dimanipulasi sebagai sebuah satuan, contohnya adalah integer, Boolean, char dan lain-lain. Sedangkan objek data terstruktur merupakan kumpulan dari objek-objek data yang lain, contoh objek data terstruktur adalah array, record, list, stack/tumpukan, queue/antrian, tree/pohon, set/himpunan, file/berkas dan lain-lain. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data. Atribut-atribut penting untuk suatu tipe data terstruktur meliputi: 1. Jumlah komponen Berdasarkan perubahan pada jumlah komponen selama eksekusi program, maka dapat dikelompokkan menjadi struktur data statis (fixed size data structure) yang jumlah komponennya tidak berubah, dan struktur data dinamis (variable size data structure) yang jumlah komponennya dapat berubah. 2. Tipe untuk setiap komponennya Apabila tipe data untuk seluruh komponennya harus sama, maka disebut struktur data homogen, dan bila dimungkinkan komponennya mempunyai tipe data yang berbeda-beda, maka disebut struktur data heterogen. 3. Nama-nama untuk memilih komponen Hampir semua struktur data menyediakan operasi untuk mengakses komponen secara individu. Pada suatu array, hal ini dilakukan dengan sebuah subscript/indeks berupa angka. 4. Jumlah maksimum komponen Untuk sebuah struktur data dinamis mungkin perlu ditentukan dengan jelas. 5. Pengorganisasian semua komponen Susunan yang paling umum adalah berupa barisan linier seperti pada array berdimensi 1, record, list, stack dan file. Selanjutnya ada yang dapat dikembangkan menjadi struktur non linear seperti array multi dimensi dan juga pohon/tree. Struktur data statis merupakan struktur data yang jumlah komponennya tidak dapat berubah atau sudah ditentukan sebelumnya. Contoh struktur data statis yaitu: 1. Array(Larik) Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur, atau tipe larik lain. Nama lain array adalah Larik, tabel, atau vektor. 2. Record(Catatan) Suatu objek benda biasanya mempunyai atribut yang perlu dicatat, setiap atribut yang perlu dicatat, memerlukan sebuah variabel untuk menyimpannya. Array dapat dipakai untuk menyimpan beberapa atribut yang jenisnya sama. Tetapi array tidak dapat menyimpan data yang jenisnya berbeda-beda. Untuk mengumpulkan semua atribut atau data-data yang jenisnya tidak sama, dapat menggunakan struktur data Record. Sama seperti Array, hampir semua Bahasa pemrograman menyediakan struktur data Record sebagai struktur data bawaan. Record adalah struktur data yang tersusun atas elemen-elemen yang jumlahnya tertentu dan tipe data elemennya dapat berbeda-beda. Elemen sebuah record disebut field. Sebagai struktur data statis, hanya elemen yang sudah didaftarkan tercatat di bagian deklarasi saja yang dapat digunakan, dan tidak dapat menambah maupun menghapus elemen. Struktur data dinamis merupakan struktur data yang jumlah komponennya dapat berubahubah. Contoh struktur data dinamis yaitu: 1. Stack(Tumpukan) Stack(tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) serta aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas” TOP dan penghapusan selalu dilakukan pada TOP. Karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi, elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out). Contohnya yaitu dalam kehidupan sehari-hari setumpuk koran, dimana koran yang paling terakhir ditambahkan dan ditaruh diatas adalah koran yang dapat dilihat. 2. Queue(Antrian) Queue dalam pengertian singkatnya adalah antrian, queue adalah struktur data yang mempunyai sifat FIFO(First In First OUT) yang artinya data yang pertama kali masuk merupakan data yang akan keluar paling awal. Dalam queue dikenal dengan istilah elemen pertama (HEAD) dan elemen terakhirnya (TAIL). Aturan penyisipan dan penghapusan elemennya adalah penyisipan selalu dilakukan setelah elemen terakhir dan penghapusan selalu dilakukan pada elemen pertama. Satu elemen yang lain dapat diakses melalui informasi NEXT. Adapun contoh dari queue dalam kehidupan sehari-hari adalah saat seseorang mengantri di sebuah bank, antrian pembayaran di Tol, antrian di SPBU dalam mengisi bahan bakar transportasi dan lain sebagainya. 3. Linked List Link list adalah desain tempat penyimpanan data yang terdiri dari node-node(simpulsimpul) yang saling terhubung. Secara umum link list juga disebut sebagai sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian. Struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori. Link list dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang. Gerbong disini setara dengan node dalam link list yang berfungsi untuk menyimpan data.