Jurnal Struktur Data [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

DATA DAN STRUKTUR DATA Rizky agung saragiih’, Surya3, Habibi Syahrozi4, Indra Gunawan5 Program Studi Teknik Informatika, STIKOM Tunas Bangsa Pematangsiantar Jl.Jend.Sudirman Blok A No.1-3 Pematangsiantar Email : [email protected] [email protected] [email protected]



ABSTRAK Dalam dunia teknologi dan informasi, Pengolah data atau informasi dibagi berdasarkan struktur dari data atau informasi tersebut. Struktur Data merupakan metode atau cara penyimpanan, penyususan, pengorganisasian, pengelompokan dan pengaturan berbagai data dalam suatu media penyimpanan dalam sistem komputer sehingga dapat dimanfaatkan secara efektif dan efisien. Penggunaan struktur data yang tepat dalam pemrograman menghasilkan Algoritma yang lebih tepat dan jelas sehingga membuat keseluruhan program menjadi lebih sederhana. Dalam teknik pemrograman, struktur data dapat juga diartikan sebagai tata letak data yang memuat kolom data, baik yang terlihat oleh pengguna (user) ataupun yang tidak terlihat untuk keperluan dalam pemrograman. Sebuah struktur data dapat digunakan untuk pengolahan database atau untuk pengolah kata yang kolomnya berubah secara beraturan. Kata Kunci : Struktur Data, Node, Tipe Data ABSTRAC In the world of technology and information, processing data and information is divided based on the structure of the data or information. Data structure is a method or method of storing, arranging, organizing, grouping, and arranging various data in a storage medium in a computer system so that it can be utilized effectively and efficiently. The use of proper data structures in programming results in more precise and clear algorithms and makes the whole program simpler. In programming techniques, data structures can also be interpreted as data layouts that contain columns of data, either visible to the user or invisible for programming purpose. A data structure can be used for database processing or for word processing whose columns change regularly. Keywords : Data Structure, Node, Type data PENDAHULUAN Salah satu hal yang terpenting dan tidak dapat dipisahkan dalam penggunaan komputer adalah data. Data merupakan suatu fakta-fakta tertentu sehingga menghasilkan kesimpulan dalam menarik suatu kesimpulan. Data adalah representasi dari fakta dunia nyata yang disimpan, direkam, direpresentasikan tidak hanya dalam bentuk teks tetapi juga dalam bnetuk suara, sinyal maupun simbol. Struktur data adalah mempresentasikan data pada memory secara logika dan setiap variabel di dalam program dikarakterisasikan secara eksplisit atau implisit. Sebagai dasar teknik dari database, Struktur data diperlukan dalam perencanaan algoritma dan penyusunan program. Type data dapat dikategorikan sebagai berikut : 1. Type data sederhana



a. Type data sederhana tunggal ➢ Integer Integer merupakan bilangan bulat yang tidak mengandung pecahan, seperti: -1,0,1,2 ➢ Float Float merupakan type data bilangan pecahan, ➢ Boolean Hanya mempunyai dua bentuk output yaitu True dan False dan dinyatakan dengan 1 dan 0, satuan data yang dipakai hanya satu bit saja. ➢ Character Type data yang meliputi digit numerik, character alfabetik dan special character. b. Type data sederhana majemuk, misalnya string.



String terbentuk dari kumpulan karakter sebanyak 256 (default) dan jangkauan nilai dari 0-255. 2. Struktur Data. Struktur data terdiri dari: a. Struktur data sederhana 1) Array merupakan type data terstruktur yang mampu menyimpan data dengan tipe sama. Array terdiri dari array dimensi 1, 2 dimensi dan array dimensi banyak (multidimensi). 2) Record Type data record dapat menampung tipe data yang berbeda-beda. b. Struktur data majemuk Struktur data majemuk terdiri dari : 1) Linier Seperti : Stack (tumpukan), Linear Linked List dan Queue (antrian). 2) Non Linier Seperti : Tree (pohon), Binary Tree (Pohon Biner), General Tree dan Graph. PEMBAHASAN A. Array/Larik. Array/Larik merupakan struktur data sederhana yang menyimpan sekumpulan elemen yang terurut dan bertipe sama. Array juga dapat diartikan sebagai pemesanan alokasi memori sementara pada komputer. Array dapat juga digambarkan sebagai elemen yang disusun vertikal sehingga diberi nama tabel.setiap elemen array diakses langsung melalui indeksnya. Indeks array harus bertipe data yang terurut seperti integer maupun karakter. Array terdiri dari array dimensi satu, array dimensi dua, array dimensi –n. Array dapat dideklarasikan sebagai berikut : tipe_data nama_var_array[ukuran]; keterangan : tipe data : jenis tipe data elemen yang tersimpan di array (mis; int, float, char) nama_var_array : nama variabel yang dipakai. Ukuran : jumlah maksimal elemen array.



Gambar 1.1 Ilustrasi Array



Dalam array ada beberapa jenis operasi yang digunakan, yaitu replace, insert, delete, seacrh, sort, dan lain-lain. B. Linked List Linked list merupakan struktur data yang memuat sekumpulan elemen bertipe sama yang memiliki keterurutan tertentu dimana setiap elemen saling berhubungan dengan elemen lain melalui suatu pointer. Linked list juga dikenal sebagai struktur data yang terdiri dari urutan record data yang mana setiap record memiliki field yang menyimpan alamat referensi dari alamat record selanjutnya. Tipe linked list ini dapat berupa bagian-bagian dari aneka macam data yang tersimpan secara acak. Linked list terdiri dari node-node yang saling terhubung. Dalam linked list , data atau node yang pertama disebut head dan node yang terakhir disebut tail. Operasi penambahan atau penghapusan sebuah node dapat mengubah nilai pada pointer linknya. Beberapa jenis linked list, yaitu : a. Singly Linked List (satu arah) Merupakan linked list yang memiliki hanya satu variabel pointer saja dan pointer tersebut menunjuk ke node selanjutnya. Field pada tail menunjuk ke NULL. Contoh : struct mahasiswa( char nama[50]; int usia; struct mahasiswa *next; )*head,*tail; b. Doubly Linked List (bolak-balik) Suatu linked list yang mempunyai dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan sebelumnya. Head dan tailnya menunjuk ke NULL. Contoh : struct mahasiswa( char nama[30]; int usia;



struct mahasiswa*next,*prev; )*head,*tail; c. Singly Circular Linked List d. Doubly Circular Linked List



Terdapat lima proses utama dalam double stack, yaitu: inisialisasi, PUSH1, POP1, PUSH2, POP2 Deklarasi stack : Deklarasi MAX_STACK #define MAX_STACK 5



Gambar 1.2 Single dan Double linked list



Setiap operasi pada linked list perlu operasi sekuensial dari node pertama. Operasi dalam linkled list : a. Insert di awal b. Insert di akhir c. Remove sebuah nilai d. Remove node pertama e. Traversing forward dan reverse C. Stack (Tumpukan) Stack atau tumpukan merupakan bentuk dari linier list dimana penambahan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari list (Top). Stack dapat juga diartikan sebagai sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan. Stack memiliki karakteristik LIFO (Last-InFirst-Out), dimana objek yang pertama masuk dalam stack akan menjadi objek yang pertama keluar dari stack. Stack dapat diimplementasikan dalam array ataupun linked list. Stack dibagi menjadi dua bagian yaitu Single Stack dan Double Stack. a. Single stack adalah stack dimana hanya terdiri dari satu koleksi. Terdapat tiga proses utama dalam single stack : 1) Inisialisasi, yaitu proses awal untuk menyimpan indeks petunjuk stack. 2) Push, yaitu proses memasukkan data baru ke stack indeks selanjutnya. 3) Pop, yaitu proses pengambilan atau pengeluaran data dari stack dengan indeks yang disimpan. b. Double stack adalah stack yang terdiri dari dua single stack.



Gambar 1.3 Ilustrasi Stack



Operasi pada stack : 1) ISEMPTY : untuk memeriksa apakah stack dalam keadaan kosong 2) ISFULL : untuk memeriksa apakah stack sudah penuh 3) PUSH : menambahkan item pada posisi paling atas (TOP). 4) POP : menghapus elemen pada posisi paling atas. 5) CLEAR : untuk mengosongkan stack. D. Queue (Antrian) Queue adalah struktur data dimana data yang pertama masuk adalah data yang pertama dapat dihapus. Struktur data queue memiliki karakteristik FIFO (First in First Out). Deklarasi queue : #define MAX 100 typedef struct{ int data[MAX]; int head; int tail; } Queue; Queue antrian;



Gambae 1.4 Ilustrasi Queue



Operasi pada queue : 1) CREATE : untuk menunjukkan dan membentuk awal terbentuknya suatu antrean. 2) ISEMPTY : memeriksa apakah queue atau antrian sudah penuh atau kosong. 3) ISFULL : memeriksa apakah antrian sudah penuh atau belum. 4) ENQUEUE : menambahkan elemen ke dalam antrian, penambahan dilakukan pada elemen paling belakang. 5) DEQUEUE : untuk menghapus head dari antrian. 6) CLEAR : untuk menghapus elemen antrian dengan cara membuat tail dan head = -1. E. Tree (Pohon) Tree atau pohon merupakan struktur data non linear yang dapat diartikan sebagai data yang terorganisir yang saling terkait dan menyerupai bentuk pohon. Tree juga dapat didefinisikan sebagai kumpulan dari data atau node dimana salah satu node disebut sebagai akar dan node lain terpecah menjadi himpunan yang tidak saling terikat dan berhubungan yang disebut dengan subtree. Dalam tree structure, setiap node dapat mempunyai 0 atau lebih node anak (child). Node yang memiliki node anak disebut dengan node induk (parent). Node paling atas dalam piramida tree disebut leaf (daun) dan node yang terletak pada pangkal tree disebut dengan node root (akar).



Gambar 1.5 Ilustrasi Tree (Pohon)



Kumpulan seluruh node pada kedalaman yang diberikan disebut dengan tingkat atau level. Kedalaman node (depth) merupakan panjang jalan dari root (akar) ke node. Setiap node memiliki dua linke edge dimana satu node hanya dapat didatangi oleh satu link tetapi satu node dapat mengeluarkan banyak link.



F. Binary Tree (Pohon Biner)



Binary tree (pohon biner) dapat didefinisikan sebagai suatu kumpulan node yang masing-masing simpulnya hanya dapat memiliki paling banyak dua subtree (anak) yang saling terpisah atau tidak terikat yang disebut dengan left subtree (cabang kiri) dan right subtree (cabang kanan). Binary tree merupakan bentuk dari tree yang beraturan. Karakteristik lain dari binary tree yaitu dimungkinkan tidak memiliki node (simpul). Tree dapat dibuat menggunakan linked list non circular secara rekursif. Binary tree dapat dideklarasikan sebagai berikut : Deklarasi struct Typedeft struct Tree{ int data; Tree *left; Tree *right; } Deklarasi variabel Tree *pohon; Istilah-istilah dalam binary tree : 1) Size : jumlah dari keseluruhan node yang terdapat pada ponon biner. 2) Depth (kedalaman) : yaitu panjang jalur yang menghubungan node sampai ke node anak paling ujung (daun). Depth juga dikenal dengan istilah height. 3) Full Binary Tree (pohon biner penuh) yaitu pohon biner yang setiap node memiliki dua node anak dan setiap cabang mempunyai panjang ruas yang sama 4) Perfect Binary Tree (pohon biner sempurna) atau dapat disebut juga dengan complete binary tree merupakan pohon biner dimana semua node kecuali leaf memiliki dua anak dan tiap cabang mempunyai panjang ruas yang berbeda. 5) Pohon biner similer yaitu dua pohon dimana memiliki struktur yang sama namun memiliki informasi yang berbeda. 6) Pohon biner ekivalent yaitu dua pohon yang mempunyai struktur dan informasi yang sama. 7) Pohon biner miring (Skewed tree) G. Graph Graph merupakan struktur data linear yang dapat didefinisikan sebagai himpunan atau keterhubungan tak terbatas antara verteks (entitas data). Graph juga dapat didefinisikan dengan struktur yang elemennya memiliki hubungan many



to many. Suatu graph mengandung dua himpunan yaitu himpunan V dan himpunan E. Himpunan V merupakan himpunan verteks dan E himpunan yang terdefinisi antara pasangan verteks. Banyaknya verteks disebut dengan order dan banyaknya edge (ruas) dikenal dengan size dari graph. Suatu graph yang tidak memiliki self-loop dapat juga disebut sebagai graph sederhana atau simple graph.



Gambar 1.6 Ilustrasi Graph



a. Graph terarah (directed graph) yaitu urutan simpul yang memiliki arti b. Graph tak terarah (undirected graph/ nondirected graph) yaitu urutan simpul dalam busur tidak terlalu dipentingkan. c. Graph berbobot (weighted graph) yaitu jika setiap busur memiliki nilai yang menyatakan keterhubungan pada dua simpul, maka busur tersebut dapat dinyatakan berbobot.



KESIMPULAN Struktur data merupakan salah satu bahan dasar yang cukup penting dalam pembuatan program dimana struktur data berfungsi mengelompokkan dan mengorganisasikan data sehingga penerapan logika program menjadi lebih berstruktur dan lebih sederhana. Beberapa struktur data yaitu Array (larik) sebagai pemesanan alokasi memori sementra dalam komputer, Stack (tumpukan) yang merupakan kumpulan data yang saling berbentuk tumpukan, Linked List sebagai struktur data yang memiliki record data, Queue (antrian) yaitu struktur data dimana data pertama masuk adalah data yang pertama keluar, struktur data Tree dan Binary Tree dan struktur data Graph.



DAFTAR PUSTKA



Sjukani. Moh. 2009. Struktur Data (Algoritma & Struktur Data 2) Dengan C, C++. Edisi 3. Jakarta : Mitra Wacana Media Hidayati. Nur. 2016. STRUKTUR DATA. Makalah Sihombing. Johnson. Tanpa Tahun. Penerapan Stack dan Queue Pada Array dan Linked List Dalam Java. Jurnal Kurniawan. Roby. Tanpa Tahun. Artikel Struktur Data. Jurnal Salsabila. N C. Tanpa Tahun. Fungsi dan Pemahaman Struktur Data. Jurnal Wijaya. Yogga P. Tanpa Tahun. Algoritma dan Struktur Data. Jurnal Andikafisma. Tanpa Tahun. Struktur Data. : https://andikafisma.wordpress.com/struktur-data/ (Diakses tanggal 22 April 2021) Andy. 2020. Mengenal 6 Tipe Struktur Data Dalam Pemrograman. https://qwords.com/blog/apa-itu-struktur-data/ (Diakses tanggal 22 April 2021) Fauzi. Cecep A. 2018. Data Struktur. : https://medium.com/@cecepahmadfauzi93/datastruktur-23cc996fe157 (Diakses tanggal 21 April 2021)