• Tidak ada hasil yang ditemukan

ANALISIS KECEPATAN STRUKTUR DATA LINKED LIST DAN TREE

N/A
N/A
Protected

Academic year: 2021

Membagikan "ANALISIS KECEPATAN STRUKTUR DATA LINKED LIST DAN TREE"

Copied!
15
0
0

Teks penuh

(1)

ANALISIS KECEPATAN STRUKTUR DATA LINKED LIST DAN TREE

Pradana Setialana

Pendidikan Teknik Informatika - Universitas Negeri Yogyakarta [email protected]

Abstract

Binary search trees are better at displaying data, find data, update data and delete data than a circular double linked list which is only good in entering data. But the low level of complexity of the program double circular linked list is its own advantages of the binary search tree that has a high level of program complexity.

Keywords: binary search tree, circular double linked list, efficient data structures, fast run time, difference

between tree and linked list.

1. Pendahuluan

Struktur data merupakan cara menyimpan, menyusun dan mengatur data dalam computer secara efisien, Ada berbagai macam struktur data yang masing-masing memiliki kelebihan dan kekurangan tersendiri. Dari berbagai macam strukur data yang ada, struktur data linked list dan tree hampir memiliki banyak kemiripan. Akan tetapi terdapat juga perbedaan yang membuat strukut data tersebut memiliki dan kelebihan tersendiri.

1.2 Linked List

Linked list atau senarai berantai yang digunakan untuk menyimpan sejumlah objek data biasanya secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemen data yang tersimpan dalam daftar dilakukan

secara lebih efektif. Pada praktiknya sebuah struktur data memiliki elemen yang digunakan untuk saling menyimpan rujukan antara satu dengan lainnya sehingga membentuk sebuah daftar abstrak, tiap-tiap elemen yang terdapat pada daftar abstrak ini seringkali disebut sebagai node. karena mekanisme rujukan yang saling terkait inilah disebut sebagai daftar berantai (linked list). Sedangkan circular double linked list sendiri merupakan jenis linked list dimana rujukan pada node terakhir akan merujuk pada node pertama, dan rujukan pada node pertama akan merujuk pada node terakhir bila yang digunakan sebagai dasar implementasi adalah daftar bertaut ganda (circular double linked list [1]. Penjelasan mengenai linked list terdapat pada Figure 1 dan circular double linked list pada Figure 2.

Fig. 1. Setiap node yang terdiri atas dua elemen, data integer, dan elemen rujukan ke node berikutnya

Fig. 2. Node terakhir menyimpan rujukan pada node pertama

1.3 Tree

Tree adalah adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung. Sedangkan pohon biner (binary tree) adalah sebuah pohon struktur data dimana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya dinamakan kiri dan kanan. Penggunaan secara

umum dari binary tree adalah binary search tree. Binary search tree memiliki sifat-sifat yaitu subtree sebelah kiri memiliki nilai yang lebih rendah daripada node kunci. Sedangkan subtree sebelah kanan memiliki nilai yang lebih tinggi daripada node kunci [2].

(2)

2. Metodologi

Metodologi penilitian untuk menganalisis persamaan, perbedaan, dan keefisien linked list dan tree adalah

1. Membandingkan cara kerja masing-masing fungsi berdasarkan flowchart

2. Membandingkan komplektifitas setiap program.

3. Menganalisis hasil running program dan waktu eksekusi pada kedua program Masing-masing program dapat menyimpan data mahasiswa yang berisi nim, nama, jurusan dan ipk dalam bentuk program circular double linked list dan tree. Untuk menguji penggunaan memori dan kecepatan eksekusi dilkakukan kondisi yang sama untuk setiap fungsi pada circular double linked list dan binary search tree. Data untuk menguji merupakan data mahasiswa yang berjumlah 6969 data berupa NIM, Nama, Jurusan dan IPK. Data tersebut diambil dari Siakad UNY yang diberikan pada matakuliah Basis Data dengan format file text (.txt). Media pengujian adalah notebook Acer 4745G dengan spesifikasi processor

Incel Core i5 430M, RAM 2 GB, ATI Mobiliti Radeon HD 5470 dengan VRAM 512 MB. Terdapat dua kondisi daya listrik notebook yaitu kondisi power saver (menggunakan kemampuan processor sedikit) dan kondisi high performance – Intel Turbo Bost (Menggunakan kemampuan penuh processor). Untuk setiap kondisi daya listrik terdapat 2 percobaan. Hasil dari penghitungan dalam millisecond. Sehingga untuk waktu eksekusi dibawah millisecond yaitu dalam hitungan nanosecond maka akan tercetak 0 ms.

3. Penelitian

Pembandingkan setiap struktur data berdasarkan setiap method yang memiliki fungsi yang sama. Perbandingan dilakukan dengan membandingkan flowchart dan waktu eksekusi setiap fungsi.

3.1 Memasukan Data

Pada tahap ini akan dilakukukan analisis dari kedua program mengenai cara, metode, kerumitan serta keefektifitasan program. Pada Figure 3 terdapat flowchart dari method insertFirst dan insertLast dari circular double linked list. Sedangkan pada Figure 4 terdapat method insert dari binary search tree.

isEmpty() Y last ß newNode

T first.setPrev(last) newNode.setNext(first) first.setPrev(newNode) last.setNext(newNode) first ß newNode newNode.setNext(last) mulai selesai

isEmpty() first ß newNode

first.setPrev(newNode) newNode.setNext(first) last.setNext(newNode) newNode.setPrev(last) last ß newNode selesai mulai

(3)

mulai

root ß null Y root ß newNode

current ß root T true parent ß current nim.compareTo(current. nimMahasiswa)<0 Y

current ß null Y parent.leftChild ß newNode

return T current ß null current ß current.rightChild parent.rightChild ß newNode Y Y T T selesai T current ß current.leftChild

(4)

Dari perbandingan dua flowchart tersebut terlihat bahwa method insert pada binary search tree lebih kompleks. Hal ini terlihat dengan adanya pengurutan data pada setiap data. Data yang masuk dengan nimMahasiswa yang lebih rendah daripada node kunci akan diletakan pada subtree sebelah kanan, sementara data dengan nimMahasiswa lebih tinggi akan diletakan pada sebelah kanan. Sementara pada circular double linked list data masuk tidak langsung diurutkan. Hal ini menyebabkan method insert pada circular double linked list hanya sederhana dan tidak sekompleks method insert pada binary search tree. Pada Figure 4 terdapat syntax newNode.setNext(first); first.setPrev(newNode); last.setNext(newNode); yang menunjukan bahwa setiap data yang masuk

akan langsung disambungkan membentuk linked list tanpa diurutkan terlebih dahulu. Sedangkan pada binary search tree setiap data masuk akan diurutkan sesuai dengan nimMahasiswa. Ini terlihat pada syntax nim.compareTo(current.nimMahasiswa )<0. Dilihat dari flowchart tersebut maka kemungkinan waktu eksekusi dari binary tree lebih lambat. Untuk membuktikan bias dilihat di tabel pengujian pada Tabel 1. Dari hasil tabel tersebut bias diambil kesimpulan bahwa kecepatan memasukan data pada circular double linked list lebih cepat dari binary search tree. Hal ini disebabkan karena pada binary tree data yang masuk diurutkan terlebih dahulu. Sedangkan pada circular double tidak diurutkan.

Kondisi Daya Percobaan Circular Double Linked List Binary Search Tree

Power Saver Percobaan 1 113 ms 168 ms

Percobaan 2 115 ms 128 ms

High Performance Percobaan 1 56 ms 64 ms

Percobaan 2 54 ms 66 ms

Tabel 1. Perbandingan waktu eksekusi memasukan data

3.2 Menampilkan Data

Circular double linked list memiliki beberapa cara untuk menampilkan data yaitu menampilkan data pertama, data terakhir, menampilkan semua data dari belakang dan menampilkan semua data dari belakang. Tetrapi untuk membandingkan dengan menampilkan data pada binary search tree hanya digunakan menampilkan semua data dari depan. Sedangkan

untuk binary search tree untuk menampilkan data yaitu dengan cara traversal yaitu preoder, inorder dan postorder. Untuk menjelaskan perbedannya yaitu dengan flowchart yang ada pada Figure 6 dan Figure 7. Pada Figure 6 terdapat flowchart menampilkan semua data dari depan untuk circular double linked list. Pada Figure 7 terdapat flowchart traversal untuk binary search tree.

!isEmpty() indek ß first

Indek<>last.getNext() Y Y "Tidak ada data" T T indek.getDataMahasiswa() indek ß indek.getNext() mulai selesai

(5)

mulai localRoot <> null Y selesai T localRoot.displayNode() preOrder(localRoot.leftChild) preOrder(localRoot.rightChild) mulai localRoot <> null Y selesai T inOrder(localRoot.leftChild) localRoot.displayNode() inOrder(localRoot.rightChild) mulai Y selesai T localRoot <> null postOrder(localRoot.leftChild) postOrder(localRoot.rightChild) localRoot.displayNode()

Fig. 7. preOrder (kiri atas), inOrder (kanan atas), postOrder (bawah)

Dari flowchart tersebut dapat diambil kesimpulan bahwa untuk menampilkan data pada circular double linked list hanya dengan menggeser pointer indek ke node berikutnya kemudian menampilkan node tersebut. Sehingga alur kerjanya cukup sederhana. Sedangkan pada binary search tree untuk menampilkan data secara traversal menggunakan rekrusif. Hal ini tentunya

membutuhkan memory yang besar dan alur kerja yang lebih rumit. Untuk membandingkan kecepatan waktu eksekusi dari kedua program yaitu dengan menampilkan data sejumlah 6969 data mahasiswa yang sama dengan data yang dimasukan pada method insert. Tabel perbandingan waktu eksekusi program ada pada Tabel 2.

Kondisi Daya Percobaan Circular Double Linked List Binary Search Tree

get_all preOrder inOreder postOrder Rata-rata

Power Saver Percobaan 1 647 ms 601 ms 541 ms 564 ms 568 ms

Percobaan 2 561 ms 601 ms 463 ms 429 ms 497 ms

High Performance Percobaan 1 347 ms 504 ms 410 ms 502 ms 472 ms

Percobaan 2 454 ms 502 ms 380 ms 318 ms 400 ms

Tabel 2. Perbandingan waktu eksekusi menampilkan data

3.3 Mencari Data

Pada tahap ini kedua program akan diuji perbandingan dari masing-masing program. Circular double linked list memiliki kelemahan pada tahap ini yaitu data yang ada disimpan tidak urut karena urutan data hanya berdasarkan dari urutan memasukan data. Data yang terurut akan memiliki kecepatan pencarian yang lebih cepa daripada data yang tidak terurut. Sedangkan binary

search tree menyimpan data secara urut karena pada awal memasukan data, setiap data dibandingkan terlebih dahulu mana data yang memiliki nilai yang lebih tinggi atau rendah. Seperti dalam Figure 8 dan Figure 9, dalam kasus ini adalah data mahasiswa sehingga pencarian dilakukan berdasarkan nimMahasiswa. Pada Figure 8 tersebut, terlihat bahwa metode pencarian data sama dengan linear search. Yaitu pencarian data secara beruntun

(6)

dengan membandingkan setiap node. Setiap String getNim pada node indeks di bandingkan dengan String cari. Indeks tersebut adalah node yang berubah ke node berikutnya jika pada node tersebut

nim tidak cocok. Pembandingan String nim tersebut akan terus berlangsung hingga indeks kembali ke node terakhir.

indeks.getNim().compareTo(cari) <> 0

indeks.getNext() ß first "data tidak ditemukan" cek ß false T Y cek ß true T "data ditemukan : " selesai indeks ß first cek ß true Y mulai indeks.getDataMahasiswa() indeks ß indeks.getNext()

(7)

current.nimMahasiswa.com pareTo(key)<>0 key.compareTo(current.ni mMahasiswa)<0 Y T Y

current ß null return null

return current Y T selesai T mulai current ß root current ß current.leftChild current ß current.rightChild

Fig. 9. Flowchart method find(String key) untuk mencari data pada binary search tree

Flowchart pada Figure 8 merupakan flowchart untuk mencari data pada circular double linked list. Pada flowchart tersebut diketahui bahwa untuk mencari data, circular double linked list harus membandingkan setiap nimMahasiswa hingga nilai

dari compareTo = 0 yang menandakan bahwa data ditemukan. Hal ini tentunya menggunakan waktu terlalu lama karena data yang berupa String tersebut harus dibandingkan satu persatu hingga sejumlah data yang ada yaitu 6969 data. Berbeda dengan

(8)

binary search tree yang terdapat pada Figure 8. Karena data pada binary search tree sudah terurut dan tersusun maka cara mencari data hanya dengan membandingkan dengan node current. Jadi jika data yang dicari memiliki nilai lebih rendah daripada current maka pencarian akan beralih ke subtree sebelah kiri, tetapi jika data yang dicari lebih tinggi daripada node current maka pencarian

akan dilakukan pada subtree sebelah kanan. Hal ini menyebabkan tidak semua data dibandingkan sehingga memungkinkan pencarian lebih cepat. Untuk lebih jelasnya terdapat tabel uji waktu eksekusi program pada Tabel 3. Waktu yang menunjukan 0 ms berarti bahwa waktu eksekusi kurang dari millisecond yaitu berkisar nanosecond.

Kondisi Daya Percobaan Circular Double Linked List Binary Search Tree

Power Saver Percobaan 1 2 ms 0 ms

Percobaan 2 4 ms 0 ms

High Performance Percobaan 1 3 ms 0 ms

Percobaan 2 2 ms 0 ms

Tabel 3. Perbandingan waktu eksekusi mencari data

3.4 Mengupdate Data

Pada dasarnya metode mengupdate data hampir sama dengan mencari data. Hanya saja ketika data ditemukan maka data tersebut kemudian dirubah ataupun ditambahkan. Tahap untuk update data yaitu dengan mencari data yang ingin diupdate

berdasarkan nimMahasiswa kemudian jika data tersebut ditemukan maka data namaMahasiswa, jurusanMahasiswa dan ipkMahasiswa dapat dirubah. Sehingga alur update data juga tidak jauh berbeda dengan alur pencarian. Seperti pada Figure 10 dan Figure 11.

indeks.getNim().compareTo(cari) <> 0

indeks.getNext() ß first "data tidak ditemukan" cek ß false T Y cek ß true T selesai "Data berhasil di update " indeks ß first cek ß true

indeks.setUpdate(nama, jurusan, ipk)

indeks.getDataMahasiswa()

indeks ß indeks.getNext() mulai

(9)

current.nimMahasiswa.com pareTo(key)<>0 key.compareTo(current.ni mMahasiswa)<0 Y T Y current ß null current.namaMahasiswa ß nama current.jurusanMahasiswa ß jurusan current.ipkMahasiswa ß ipk Y T selesai T mulai "Data tidak ditemukan" current ß root current ß current.leftChild current ß current.rightChild

Fig. 11. Flowchart method update untuk mengupdate data pada binary search tree Pada flowchart tersebut dapat dilihat

bahwa untuk mencari data yang akan diupdate menggunakan cara yang sama dengan yang digunakan pada method mencari. Dari Figure 10 dan Figure 11 tersebut dapat dilihat bahwa

kemungkinan hasil waktu eksekusi dari kedua program tidak akan berbeda jauh dari hasil waktu eksekusi program. Untuk lebih detailnya mengenai waktu eksekusi dapat dilihat pada Tabel 4.

(10)

Kondisi Daya Percobaan Circular Double Linked List Binary Search Tree

Power Saver Percobaan 1 2 ms 0 ms

Percobaan 2 3 ms 0 ms

High Performance Percobaan 1 1 ms 0 ms

Percobaan 2 2 ms 0 ms

Tabel 4. Perbandingan waktu eksekusi update data

3.5 Menghapus Data

Cara untuk menghapus data dari kedua program adalah dengan mencari terlebih dahulu data yang ingin dihapus. Jika data tersebut ditemukan maka data tersebut akan dihapus. Untuk menghapus data pada circular double linked list adalah dengan menyambungkan node sebelum dan setelah node yang akan dihapus (Figure 12). Syntax

untuk menyambungkan adalah

indeks.getPrev().setNext (indeks.getNext()) dan

indeks.getNext().setPrev (indeks.getPrev()). Sedangkan untuk menghapus node pada binary search tree lebih rumit dan lebih kompleks daripada circular double linked list. Hal ini karena posisi node dalam binary tree harus urut dan sesuai struktur binary search tree. Ketika terjadi penghapusan node, maka posisi node yang dihapus tersebut harus digantikan oleh node dimana node tersebut sesuai dengan struktur dari binary search tree. Untuk lebih jelasnya dapat dilihat pada Figure 13.

indeks.getNim().compareTo(cari) <> 0

indeks.getNext() ß first "data tidak ditemukan"

cek ß false T

Y Y

cek ß true indeks ß first

"data berhasil di delete"

indeks <> first && indeks <> last Y Y T T "data berhasil di delete" Y T "data berhasil di delete" selesai indeks ß first cek ß true removeLast(); mulai removeFirst() indeks ß indeks.getNext() indeks.getPrev().setNext (indeks.getNext()) indeks.getNext().setPrev (indeks.getPrev()) T

(11)

mulai

current.nimMahasiswa.compareTo(key) <> 0

parent ß current

key.compareTo(current.nimMahasiswa)<0 isLeftChild ß true current ß current.leftChild Y

isLeftChild ß false current ß current.rightChild

T

current ß null Y return false Y

T

current.leftChild ß null & current.rightChild ß null

current ß root root ß null

isLeftChildß true parent.rightChild ß null Y T Y T T parent.leftChild ß null Y A B T current ß root parent ß root isLeftChild ß true

(12)

A current.rightChild ß null root ß null parent.leftChild ß current.leftChild current ß root isLeftChild parent.rightChild ß current.leftChild Y Y T T Y current.leftChild ß null T isLeftChild parent.leftChild ß current.rightChild parent.rightChild ß current.rightChild T Y Y current ß root isLeftChild parent.rightChild ß successor root ß successor parent.leftChild ß successor Y T T Y T successor.leftChild ß current.leftChild return true B selesai successor ß getSuccessor(current)

Fig. 13.2 Flowchart fungsi untuk menghapus data pada binary search tree

Penghupusan node pada binary search tree sangat komplek dan lebih rumit daripada penghapusan node pada circular double linked list. Pada binary search tree erdapat berbagai macam kondisi node yang akan dihapus yaitu ketika node tersebut merupakan leaf atau tidak mempunyai anak, node tersebut memiliki 1 anak di kanan, node tersebut memiliki 1 anak di kiri dan node tersebut memiliki 2 anak. Terdapat tiga tahap untuk menghapus node yang memiliki 2 anak [3].

1. Cari nilai minimum node pada subtree sebelah kanan (Figure 14)

2. Mengganti nilai node yang akan dihapus dengan nilai minimum yang ditemukan tersebut (Figure 15)

3. Hapus node dengan nilai minimum tersebut (Figure 16)

Untuk memahami tahapan menghapus node yang memiliki dua anak tersebut dapat dilihat pada Figure 14, Figure 15 dan Figure 16 yang mensimulasukan penghapusan node 12.

(13)

Fig. 14. Nilai minum dari subtree sebelah kanan adalah 19

Fig. 15. Nilai pada node 12 dirubah menjadi 19

(14)

Kerumitan dari penghapusan node pada binary search tree ini merupakan kelemahan dibandingkan dengan cirucal double linked list. Akan tetapi

dibalik kerumitan tersebut binary search tree masih unggul dalam waktu eksekusi program. Untuk membuktikannya dapat dilihat pada Tabel 5.

Kondisi Daya Percobaan Circular Double Linked List Binary Search Tree

Power Saver Percobaan 1 3 ms 0 ms

Percobaan 2 2 ms 0 ms

High Performance Percobaan 1 1 ms 0 ms

Percobaan 2 1 ms 0 ms

Tabel 5. Perbandingan waktu eksekusi menghapus node

4. Hasil Penelitian

Dari berbagai perbandingan dalam penelitian tersebut dapat diketahui perbedaan, persamaan serta kelebihan dan kekurangan dari struktur data circular double linked list dan binary search tree. Persamaan dari tree dan linked list adalah sama-sama struktur data dinamis yaitu jumlah komponennya dapat

berubah. Sedangkan perbedaanya adalah linked list merupakan strukur data linear sedangkan binary search tree merupakan strukur data hirarkis [4]. Hasil dari waktu eksekusi program pada Tabel 6 digunakan untuk analisis serta mengambil kesimpulan mengenai struktur data circular double linked list dan binary search tree.

Percobaan Fungsi Circular Double Linked List Binary Search Tree

Percobaan 1 – Power Saver Memasukan Data 113 ms 168 ms Menampilkan Data 647 ms 568 ms Mencari Data 2 ms 0 ms Update Data 2 ms 0 ms Delete Data 3 ms 0 ms Percobaan 2 – Power Saver Memasukan Data 115 ms 128 ms Menampilkan Data 561 ms 497 ms Mencari Data 4 ms 0 ms Update Data 3 ms 0 ms Delete Data 2 ms 0 ms Percobaan 1 – High Performance Memasukan Data 56 ms 64 ms Menampilkan Data 347 ms 472 ms Mencari Data 3 ms 0 ms Update Data 1 ms 0 ms Delete Data 1 ms 0 ms Percobaan 2 – High Performance Memasukan Data 54 ms 66 ms Menampilkan Data 454 ms 400 ms Mencari Data 2 ms 0 ms Update Data 2 ms 0 ms Delete Data 1 ms 0 ms

Tabel 6. Perbandingan waktu eksekusi program untuk semua fungsi. Dari Tabel 6 tersebut maka dapat dianalisis :

1. Fungsi memasukan data – Waktu eksekusi pada binary search tree lebih lama daripada circular double linked list. Ini dikarena data yang masuk pada binary search tree langsung diurutkan dan disusun sesuai struktur tree sedangkan untuk circular double linked list data yang masuk langsung ditempatkan dalam node-node yang tersambung begitu saja sesuai urutan

memasukan data. Tetapi fungsi

memasukan file pada binary tree lebih rumit daripada circular double linked list (Figure 5).

2. Fungsi menampilkan data – Waktu eksekusi rata-rata untuk traversal pada binary search tree lebih cepat daripada waktu eksekusi fungsi menampilkan data dari depan pada circular double linked list. Hal ini dikarenakan binary search tree menggunakan rekrusif untuk menampilkan data. Tetapi penggunaan rekrusif menyebabkan memory yang lebih besar dan sulit untuk dipahami [5].

3. Fungsi mencari data – Waktu eksekusi binary search tree lebih cepat daripada circular double linked list bahkan kecepatan eksekusi kurang dari hitungan

(15)

millisecond (nanosecond) sehingga pada ujicoba selalu menampilkan nilai 0 ms. Ini disebabkan karena dalam proses mencari data yang dicari tidak dibandingkan satu persatu dengan setiap node. Sedangkan pada circular double linked list data dibandingkan satu persatu hingga waktu yang digunakan lebih lama.

4. Fungsi mengupdate data – Waktu eksekusi binary search tree lebih cepat daripada circular double linked list karena fungsi dari update sendiri sama dengan mencari. Jika data yang akan diupdate ditemukan maka akan dilakukan perubahan pada data itu.

5. Fungsi menghapus data – Sama dengan mengupdate, waktu eksekusi binary search tree lebih cepat dari circular double linked list karena fungsi ini menggunakan fungsi yang sama dari mencari. Hanya saja fungsi delete pada binary search tree sangat rumit dikarenakan ketika node dihapus jangan sampai mengubah struktur dan urutan dari binary search tree sehingga terganti pergantian posisi pada node. Tetapi walau tingkat kerumitan dari fungsi menghapus node tinggi tetapi waktu eksekusi tetap lebih cepat daripada binary search tree. Untuk lebih jelasnya mengenai analisis terdapat pada Tabel 7.

Fungsi Circular Double Linked List Binary Search Tree

Memasukan Data Eksekusi lebih cepat Eksekusi lebih lambat

Menampilkan Data Eksekusi lambat Eksekusi cepat, menggunakan memori

lebih besar

Mencari Data Eksekusi lambat Eksekusi cepat

Update Data Eksekusi lambat Eksekusi cepat

Delete Data Eksekusi lambat Eksekusi cepat, alur fungsi kompleks dan

sulit dipahami Tabel 7. Analisis circular double linked list dan binary search tree.

5. Kesimpulan

Dari hasil penelitian tersebut maka dapat diambil kesimpulan bahwa pengujian kecepatan waktu eksekusi bergantung pada spesifikasi komputer yang digunakan. Semakin tinggi spesifikasi komputer maka waktu eksekusi akan semakin cepat. Dalam konteks ini data yang diujikan adalah data mahasiswa yang terdiri dari nim, nama, jurusan serta ipk yang memiliki tipe data String. Untuk waktu eksekusi, binary tree lebih unggul daripada circular double linked list dari menampilkan data, mencari data, update data dan delete data. Sedangkan untuk memasukan data, circular double linked list lebih cepat. Dilihat dari alur fungsi dan kerumitan program maka binary search tree lebih kompleks dan lebih rumit daripada circular double linked list.

6. Referensi

[1] Wikipedia. “Daftar Bertaut”. http:// id.wikipedia.org/wiki /Daftar_bertaut (diakses tanggal 27 Desember 2011)

[2] Wikipedia. “Pohon Biner”. http://id.wikipedia.org/ wiki/ Pohon_biner (diakses tanggal 27 Desember 2011)

[3] Algolist. “Binary Search Tree Removing Node”. http://www.algolist.net/Data_structures/ Binary_search _tree / Removal. (diakses tanggal 28 Desember 2011)

[4] Nusinau. “Dianita Struktur Data”. http:// www.nusinau .com/ dianita-struktur-data/ (diakses tanggal 28 Desember 2011)

[5] Unikom. “Recrusive”. http://elib.unikom.ac.id/files/ disk1/392/jbptunikompp-gdl-dianaeffen-19571-9-pertemua-9.pdf (diakses tanggal 28 Desember 2011)

Gambar

Fig. 1. Setiap node yang terdiri atas dua elemen, data integer, dan elemen rujukan ke node berikutnya
Fig. 4. Flowchart insertFirst (kiri) dan insertLast (kanan) pada circular double linked list
Fig. 5. Flowchart insert pada binary search tree
Fig. 6. Method get_all. Menampilkan semua data dari depan pada circular double linked list
+7

Referensi

Dokumen terkait

Langkah-langkah untuk menghapus simpul tertentu (depan) dari double linked list adalah sebagai berikut:.. Inisialisasi sebuah variabel bertipe struct simpul* (hapus)

Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah.. Sesuai dengan definisi tersebut tiap

Menghapus node pada AVL Tree sama dengan menghapus binary search tree procedure dengan perbedaan pada penanganan kondisi tidak balance.. Penanganan kondisi tidak balance pada

Sedangkan Single Linked List Non Circular artinya field pointer-nya hanya satu buah saja dan satu arah dan saling terhubung satu sama lain, untuk setiap node pada linked

Berikut ini adalah Algoritma untuk menyisipkan ITEM ke dalam list, tepat sesudah simpul A, atau jika LOC = NULL, maka ITEM disisipkan sebagai simpul pertama dari list.. Misalkan

Operasi dasar dari binary search tree(BST) ini sendiri sangatlah sederhana, yakni hanya fungsi perbandingan dan fungsi rekursif. Di mana anak pohon sebelah kiri node

menggunakan struktur data array, struct, tree, dan file menggunakan teknik-teknik seperti stack, queue, dan linked list serta hashing.. •  Matakuliah ini juga

Linked Structure for General Trees When representing a binary tree with a linked structure, each node explicitly maintains fields left and right as references to individual children..