Selasa, 06 Maret 2018

STRUKTUR DATA

LATIHAN SOAL STRUKTUR DATA


1.    Seorang programmer yang baik harus mengetahui cara pembuatan program yang bagus. Berikan penjelasan tentang program yang bagus itu seperti apa!
JAWAB
a.         Definisikan Masalah
Definisikan masalah merupakan awal yang penting dalam membuat program. Dengan masalah yang terlalu global, kita tidak dapat membuat algoritma yang baik. Dengan mengidentifikasikan masalah, kita dapat mengetahui masalah secara lebih kompleks dan dapat merancang algoritma yang lebih baik dan runtut sesuai aplikasi yang diinginkan.
b.         Buat Algoritma Dan Struktur Penyelesaian
Jika masalahnya kompleks, maka dibagi ke dalam bagian-bagian. Dimulai dari masalah global yang diperinci menjadi masalah yang lebih kecil dan rinci. Cara ini efektif untuk pembuatan algoritma yang kompleks. Perincian masalah ini terus dilakukan hingga algoritma pas diproses oleh komputer.
c.         Menulis Program
Menulis program juga harus menggunakan format penulisan yang baik. Jadi kita harus memperhatikan cara penulisan kita dalam membuat suatu program agar bisa dipahami orang lain. Contohnya rata baris sesuai fungsi, deklarasi variabel sesuai fungsi yang dimaksud. Kesingkatan penulisan program tanpa mengurangi fungsi aplikasi juga merupakan salah satu agar program dapat dikatakan baik.
d.        Mencari Kesalahan
Mencari kesalahan program dengan teliti. Seperti kesalahan penulisan atau malah syntax yang salah dan tidak sesuai dengan fungsi aplikasi yang diinginkan. Proses ini sangat diperlukan agar program yang dibuat memiliki kesalahan minimum.
e.         Uji dan Verifikasi Program
Pertama kali harus diuji apakah program dapat dijalankan. Apabila program tidak dapat dijalankan maka perlu diperbaiki penulisan ssyntax.Dan bila program dapat dijalankan, maka harus diuji dengan menggunakan data-data yang biasa yaitu data yang diharapkan oleh sistem. Pastikan hasil uji coba sesuai dengan apa yang diharapkan.
f.          Pemeliharaan Program
Ketika program sudah selesai dan dapat dijalankan sesuai keinginan, kita perlu merawat dan melakukan maintenance agar program tetap berljalan sesuai keinginan. Atau kita dapat melakukan update agar aplikasi dapat berjalan dengan fungsi yang lebih.

2.    Struktur data merupakan suatu cara untuk menyimpan dan mengatur sebuah data supaya dapat digunakan secara efektif dan efisien. Sebutkan dan jelaskan jenis-jenis struktur data secara umum.
JAWAB
a.         Struktur Data Sederhana (Primitif)
                             i.          Integer = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 4 byte.
                           ii.          Short = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 2 byte. .
                         iii.          Long = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 4 byte.
                         iv.          Long Long = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 8 byte.
                           v.          Float = Tipe data ini untuk bilangan real yang membutuhkan memori sebesar 4 byte.
                         vi.          Double = Tipe data ini untuk bilangan real yang membutuhkan memori sebesar 8 byte.
                       vii.          Boolean = Tipe data ini untuk Nilai logika yang bernilai true (benar) dan false (salah). Tipe data ini membutuhkan memori sebesar 1 byte.
                     viii.          Character = Tipe data ini untuk sebuah karakter. Tipe data ini membutuhkan memori sebesar 1 byte. Tipe ini bisa digunakan untuk pembuatan password.

b.         Struktur Data Majemuk (Non-Primitif)
                             i.    Linear
1)        Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang  bertipe sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap  elemen  dapat diakses langsung melalui indeksnya. Indeks larik harus berupa  tipe data yang berurutan (misalnya integer atau karakter) dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
2)        Stack
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. 
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
3)        Queue
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out). 
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 
4)        List dan Multi-List (Daftar)
List linear adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

                           ii.          Non-Linear
1)        Binary Tree (Pohon Biner)
Sebuah pohon biner (binary tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left) dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.
2)        Graph
Graph merupakan struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data. Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian.

3.  Jelaskan beberapa aplikasi perangkat lunak komputer yang menggunakan struktur data sebagai dasar pengembangannya.
JAWAB
a.         DBMS (Database Management System), model aplikasi jaringan antardata dilakukan menggunakan graph.
b.         Hierarki model menggunakan tree.
c.         RDMS (Relational Database Management System) menggunakan array.

4.     Abstract Data Type (ADT) merupakan cara untuk melihat struktur data, dengan fokus pada apa yang dilakukan dan mengabaikan proses yang terdapat didalamnya saat menjalankan eksekusi. Buatlah algoritma yang menganalogikan abstraksi perangkat elektronik.
JAWAB
type tiketBioskop: < nama_film : string,
kode_film : string,
jadwal_film : string,
harga_tiket : string,
quota : integer >
T : array [1..4] of tiketBioskop
type datapembeli: < nama_pembeli : string,
kode_pembelian : string >
D : array [1..9999] datapembeli
jumlah_pembeli : integer
pilihan : integer;
procedure lihatBioskop()
procedure beliTiket()
function  buatKodePembelian( T : tiketBioskop) -> string

5.  Berikan penjelasan dan bandingkan beberapa pendekatan yang dapat digunakan untuk merancang sebuah algoritma.
JAWAB
Terdapat dua pendekatan umumyang bisa digunakan dalam merancang algoritma, yaitu :
a.         Pendekatan perancangan secara top-down
Di mulai dengan cara membagi algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul yang terbagi ini masih bisa diuraikan lagi menjadi beberapa sub-modul, dan proses ini dilakukan berulang-ulang higga kompleksitas modul yang diinginkan terpenuhi. Metode perancangan top-down merupakan bentuk perbaikan secara bertahap menambah modul lain yang dipanggil. Oleh karena itu, pendekatan top-down di mulai dari desain abstrak, dan desain ini disempurnakan menjadi tingkat lebih konkret pada setiap langkah hingga tercapai suatu level yang tidakmemerlukan perbaikan lebih lanjut.
b.         Pendekatan perancangan secara bottom-up
Di mulai dengan pembuatan modul paling dasar, kemudian dilanjutkan keperancangan modul tingkat yang lebih tinggi. Modul yang memiliki tingkat lebih tinggi diimplementasikan menggunakan operasi yang dilakukan oleh modul tingkat yang lebih rendah. Dengan demikian, sub-modul pada pendekatan ini dikelompokkan secara bersama untuk membentuk tingkat modul yang lebih tinggi. Semua modul tingkat yang lebih tinggi dikumpulkan bersama-sama untuk membentuk modul tingkat yang lebih tinggi. Proses ini diulang hingga desain algoritma yang lengkap terpenuhi.

6.      Sebuah program dapat memiliki lebih dari satu algoritma. Rancang algoritma untuk program kalkulator yang dapat melakukan operasi penjumlahan dan pengurangan.
JAWAB
a.         Pseudocode
Start
Inisialisaikan bil1, bil2, oprs, hasil
Input nilai a, b
Pilih salah satu operasi dari (+),(-)
Jika anda memilih operasi (+), maka hasil = a + b
Jika anda memilih operasi (-), maka hasil = a – b
Cetak hasil
End
b.         Flowchart




7.        Ukurlah kompleksitas algoritma yang Anda rancang menggunakan notasi Big O!
JAWAB
Pernyataan “f(x) adalah O(g(x))”, biasa ditulis f(x) = O(g(x)). Pernyataan ini adalah penyalahgunaan notasi. Persamaan dari dua buah fungsi tidak dinyatakan. Properti O(g(x)) tidaklah simetrik. Karena alasan ini, beberapa penulis lebih memilih menggunakan notasi himpunan dan menulis. Menganggap O(g) sebagai himpunan dari fungsi-fungsi yang didominasi oleh g. Dalam penggunaan yang lebih rumit, O( ) dapat muncul pada tempat yang berbeda di dalam sebuah persamaan, bahkan beberapa kali untuk masing-masing sisi.
Misalnya, pernyataan berikut benar untuk (n + 1)2 = n2 + O(n) nO(1) = O(en)
Maksud dari pernyataan diatas adalah :
Untuk setiap fungsi yang memenuhi untuk setiap O( ) pada sisi kiri, terdapat fungsi-fungsi yang memenuhi masing-masing O( ) pada sisi kanan, melakukan substitusi untuk semua fungsi-fungsi ini ke dalam persamaan menyebabkan kedua sisi menjadi sama. Misalnya, persamaan ke-3 diatas berarti: “Untuk setiap fungsi f(n) = O(1), terdapat fungsi-fungsi g(n) = O(en) sehingga nf(n) = g(n)”




REFERENSI :
Wantoro, Jan dan Sukirman. 2017. ALGORITMA & STRUKTUR DATA DALAM BAHASA C/C++. Surakarta: Muhammadiyah University Press.
Andilau. 2014. Pengertian dan penjelasan Struktur Data, Stack, Queue, Sorting (Bubble Sort & Selection Sort). From http://bekokmarley.blogspot.co.id/2014/01/pengertian-dan-penjelasan-struktur-data.html. 8  Januari 2014.
Ridahani. S, Lutfiana. 2017. PENGERTIAN DAN JENIS-JENIS STRUKTUR DATA. From  http://lutfianaridahani.blogspot.co.id/2017/02/normal-0-false-false-false-en-us-x-none.html. Februari 2017.
Maulana. F, Ghifary. 2017. Bagaimana cara membuat program yang baik?. From https://www.dictio.id/t/bagaimana-cara-membuat-program-yang-baik/12809. 1 Oktober 2017.
Tyo, Mboreinz. 2013. Algoritma dan Flowchart Kalkulator Sederhana. From http://mbor3inz.blogspot.co.id/2013/10/algoritma-dan-flowchart-kalkulator.html. 19 Oktober 2013.
Nur Cholis, Azis. 2014. Penggunaan “Notasi Big-O” Untuk Menganalisa Efisiensi Algoritma. From https://azisnurc.wordpress.com/2014/12/28/penggunaan-notasi-big-o-untuk-menganalisa-efisiensi-algoritma/. 28 Desember 2014.
Risky Saputra, Fiqih. 2014. Program Tiket Bioskop Linked List Dengan Pascal. From http://liu-fiq.blogspot.co.id/2015/09/program-tiket-bioskop-linked-list.html. 17 September 2015.

Minggu, 25 Februari 2018

ALGORITMA & STRUKTUR DATA DALAM BAHASA C++

PENGERTIAN STRUKTUR DATA DAN JENIS-JENIS STRUKTUR DATA


Image result for gambar struktur data


A.        PENGERTIAN STRUKTUR DATA
Struktur data memegang peran penting dalam teknik pemrograman. Pemilihan struktur data yang tepat dapat meningkatkan efisiensi dan efektifitas sebuah program. Dalam teknik pemrograman, Struktur data adalah tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. 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.

Dalam pengertian lain, Struktur Data dapat juga disebut sebagai suatu kumpulan objek-objek data yang memiliki aturan (terorganisir) yang kemudian di golongkan berdasarkan operasi-operasi untuk memanipulasinya. Contoh objek data tersruktur adalah Array, Record, Stack, Queue, Tree,dll.

1.    Atribut-Atribut Penting Untuk Suatu Tipe Data Terstuktur Yakni :
a.    Jumlah Komponen
Berdasarkan jumlah komponen selama eksekusi program, maka dapat dikelompokkan menjadi :
·  Struktur Data Statis (Jumlah komponennya tidak berubah), seperti Array, Record, himpunan.
·  Struktur Data Dinamis (Jumlah komponennya dapat berubah), seperti List, Queue, Stack.
b.    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.
c.    Nama-nama untuk memilih komponen
Hampir semua struktur data menyediakan operasi untuk mengakses komponen secara individu. Pada suatu array (kumpulan data yang mempunyai tipe sama), hal ini dilakukan dengan sebuah indeks berupa angka.
d.   Jumlah maksimum komponen
Tidak semua jenis struktur data harus ditentukan jumlah maksimum komponen, namun untuk sebuah tipe data dinamis mungkin perlu ditentukan dengan jelas.
e.    Pengorganisasian semua komponennya
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 linier seperti array multi dimensi dan juga pohon/tree.
2.    Kegunaan
1)        Memudahkan dalam memahami dan memecahkan masalah  algoritma
2)        Meningkatkan  efisiensi  memori  saat  program  komputer  sedang  bekerja
3)        Proses reservasi memori yang tidak perlu akan diminimalisasi



B. JENIS - JENIS STRUKTUR DATA
1.    Struktur Data Sederhana (Primitif)
a.    Integer
Tipe data "Int" yaitu bilangan bulat dengan jangkauan nilai antara -2147483648 sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar 4 byte.
b.   Short
Tipe data "Short" yaitu bilangan bulat dengan jangkauan nilai antara -32768 sampai dengan 32767. Tipe data ini membutuhkan memori sebesar 2 byte. Tipe ini bisa digunakan untuk memproses umur seseorang.
c.    Long
Tipe data "Long" yaitu bilangan bulat dengan jangkauan nilai antara -2147483648 sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar 4 byte.
d.   Long Long
Tipe data "Long Long" yaitu bilangan bulat dengan jangkauan nilai antara -9232372036854775808 sampai dengan 9232372036854775807. Tipe data ini membutuhkan memori sebesar 8 byte. Tipe data ini bisa digunakan untuk memproses keuangan.
e.    Float
Tipe data "Float" yaitu bilangan real dengan ketelitian rendah yaitu 6-7 digit serta memiliki jangkauan nilai antara 10-38 sampai dengan 1038  Tipe data ini membutuhkan memori sebesar 4 byte. Tipe ini bisa digunakan untuk menghitung volume atau luas suatu bangun.
f.     Double
Tipe data "Double" yaitu bilangan real dengan ketelitian tinggi yaitu 15 digit serta memiliki jangkauan nilai antara 10-308 sampai dengan 10308. Tipe data ini membutuhkan memori sebesar 8 byte.
g.    Boolean
Tipe data "Bool" yaitu Nilai logika yang bernilai true (benar) dan false (salah). Tipe data ini membutuhkan memori sebesar 1 byte.
h.   Character
Tipe data "Char" yaitu sebuah karakter. Tipe data ini membutuhkan memori sebesar 1 byte. Tipe ini bisa digunakan untuk pembuatan password.


2.    Struktur Data Majemuk (Non-Primitif)
a.    Linear
1)   Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang  bertipe sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap  elemen  dapat diakses langsung melalui indeksnya. Indeks larik harus berupa  tipe data yang berurutan (misalnya integer atau karakter) dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
2)   Stack
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. 
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.

OPERASI-OPERASI/FUNGSI STACK :
·      Push : digunakan untuk menambah item pada stack pada tumpukan paling atas.
·      Pop  : digunakan untuk mengambil item pada stack pada tumpukan paling atas.
·      Clear : digunakan untuk mengosongkan stack.
·      IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong.
·      IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh.

3)   Queue
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out). 
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 

KARAKTERISTIK QUEUE (ANTRIAN) : 
·      Elemen antrian.
·      Front (elemen terdepan antrian).
·      Tail (elemen terakhir).
·      Jumlah elemen pada antrian.
·      Status antrian

OPERASI-OPERASI QUEUE : 
·      Create(), untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head dan Tail = -1.
·      IsEmpty(), untuk memeriksa apakah antrian sudah penuh atau belum dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah pergerakan pada antrian terjadi dengan penambahan elemen antrian ke belakang, yaitu menggunakan nilai Tail.
·      IsFull, untuk mengecek apakah antrian sudah penuh atau belum dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh.
·      Enqueue, untuk menambahkan elemen ke dalam antrian, penambahan elemen selalu ditambahkan di elemen paling belakang penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu.
·      Dequeue(), digunakan untuk menghapus elemen terdepan/pertama (head) dari antrian dengan cara menggeser semua elemen antrian ke depan dan mengurangi Tail dengan 1 penggeseran dilakukan dengan menggunakan looping.
·      Clear(), untuk menghapus elemen-elemen antrian dengan cara membuat Tail dan Head = -1. Penghapusan elemen-elemen antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesannya ke nilai -1 sehingga elemen-elemen antrian tidak lagi terbaca.
·      Tampil(), untuk menampilkan nilai-nilai elemen antrian menggunakan looping dari Head sampai dengan Tail.

4)   List dan Multi-List (Daftar)
List linear adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian. Sebuah list linear dikenali dengan :
·      Elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first).
·      Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next.
·    Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat diakses.
·      Elemen terakhirnya.

b.   Non-Linear
1)   Binary Tree (Pohon Biner)
Sebuah pohon biner (binary tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left) dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.

2)   Graph
Graph merupakan struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data. Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian.
Contoh: informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini kota X bisa berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk memeriksa keterhubungan dan jarak tidak langsung antara dua kota dapat diperoleh berdasarkan data keterhubungan-keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Representasi data dengan struktur data linear ataupun hirarkis pada masalah ini masih bisa digunakan namun akan membutuhkan pencarian-pencarian yang kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straightforward) dilakukan pada strukturnya sendiri.




REFERENSI :
Wantoro, Jan dan Sukirman. 2017. ALGORITMA & STRUKTUR DATA DALAM BAHASA C/C++. Surakarta: Muhammadiyah University Press.
Arizal, Anton. 2015. Pengertian Struktur Data dan Jenis-jenisnya. From http://antonarizal.blogspot.co.id/2015/01/pengertian-struktur-data-dan-jenis.html. 11 Januari 2015
Ridahani. S, Lutfiana. 2017. PENGERTIAN DAN JENIS-JENIS STRUKTUR DATA. From http://lutfianaridahani.blogspot.co.id/2017/02/normal-0-false-false-false-en-us-x-none.html. Februari 2017.
Andilau. 2014. Pengertian dan penjelasan Struktur Data, Stack, Queue, Sorting (Bubble Sort & Selection Sort). From http://bekokmarley.blogspot.co.id/2014/01/pengertian-dan-penjelasan-struktur-data.html. 8  Januari 2014.
Sahabat. 2009. Erika Struktur Data. From https://www.nusinau.com/erika-struktur-data. 4 Juni 2009.

Saddam, Andryan. 2016. Struktur Data Primitif Pada C++. From http://logical-mins.blogspot.co.id/2016/07/struktur-data-cpp.html. 29 Juli 2016

Template by:

Free Blog Templates