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. 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 program.
3.
Menganalisis hasil running program dan waktu eksekusi pada kedua program
komplektifitas
setiap
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.
mulai
mulai
isEmpty()
isEmpty()
Y
first ß newNode
last ß newNode
T newNode.setNext(first) first.setPrev(newNode) last.setNext(newNode)
last.setNext(newNode) newNode.setPrev(last)
newNode.setNext(last)
first ß newNode
last ß newNode
first.setPrev(last)
first.setPrev(newNode) newNode.setNext(first)
selesai
selesai
Fig. 4. Flowchart insertFirst (kiri) dan insertLast (kanan) pada circular double linked list
mulai
root ß null
Y
root ß newNode
T
selesai
T
current ß root
true
Y
parent ß current
nim.compareTo(current. nimMahasiswa)<0
Y
current ß current.leftChild
current ß null
Y
parent.leftChild ß newNode
T
T return
current ß current.rightChild
current ß null
T
Y
parent.rightChild ß newNode
Fig. 5. Flowchart insert pada binary search tree
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 Kondisi Daya Power Saver High Performance
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.
Percobaan Circular Double Linked List Percobaan 1 113 ms Percobaan 2 115 ms Percobaan 1 56 ms Percobaan 2 54 ms Tabel 1. Perbandingan waktu eksekusi memasukan data
Binary Search Tree 168 ms 128 ms 64 ms 66 ms
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.
mulai
!isEmpty()
Y
indek ß first
indek.getDataMahasiswa() indek ß indek.getNext()
Y
T
T
Indek<>last.getNext()
"Tidak ada data"
selesai
Fig. 6. Method get_all. Menampilkan semua data dari depan pada circular double linked list
mulai
localRoot <> null
mulai
Y
localRoot.displayNode() preOrder(localRoot.leftChild) preOrder(localRoot.rightChild)
localRoot <> null
T
T
selesai
selesai
inOrder(localRoot.leftChild) localRoot.displayNode() inOrder(localRoot.rightChild)
Y
mulai
localRoot <> null
Y
postOrder(localRoot.leftChild) postOrder(localRoot.rightChild) localRoot.displayNode()
T
selesai
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 Kondisi Daya Power Saver High Performance
Percobaan Percobaan 1 Percobaan 2 Percobaan 1 Percobaan 2
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.
Circular Double Linked List get_all 647 ms 561 ms 347 ms 454 ms
preOrder 601 ms 601 ms 504 ms 502 ms
Binary Search Tree inOreder postOrder 541 ms 564 ms 463 ms 429 ms 410 ms 502 ms 380 ms 318 ms
Rata-rata 568 ms 497 ms 472 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
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.
mulai
indeks ß first cek ß true
indeks.getNim().compareTo(cari) <> 0
T
cek ß true
Y "data ditemukan : " indeks.getNext() ß first
Y
"data tidak ditemukan"
indeks.getDataMahasiswa() T cek ß false
indeks ß indeks.getNext()
selesai
Fig. 8. Flowchart method getData untuk mencari data pada circular double linked list
mulai
current ß root
current.nimMahasiswa.com pareTo(key)<>0
T
selesai
Y
key.compareTo(current.ni mMahasiswa)<0
Y
current ß current.leftChild
T
current ß current.rightChild
current ß null
Y
return null
T
return current
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
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 Kondisi Daya Power Saver High Performance
Percobaan Percobaan 1 Percobaan 2 Percobaan 1 Percobaan 2
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.
Circular Double Linked List 2 ms 4 ms 3 ms 2 ms
Binary Search Tree 0 ms 0 ms 0 ms 0 ms
Tabel 3. Perbandingan waktu eksekusi mencari data 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.
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 mulai
indeks ß first cek ß true
indeks.getNim().compareTo(cari) <> 0
T
cek ß true
Y indeks.setUpdate(nama, jurusan, ipk)
indeks.getNext() ß first
"data tidak ditemukan" "Data berhasil di update "
T cek ß false indeks.getDataMahasiswa()
indeks ß indeks.getNext()
selesai
Fig. 10. Flowchart method updateData untuk mengupdate data pada circular double linked list
mulai
current ß root
current.nimMahasiswa.com pareTo(key)<>0
T
selesai
Y
key.compareTo(current.ni mMahasiswa)<0
Y
current ß current.leftChild
T
current ß current.rightChild
current ß null
Y
"Data tidak ditemukan"
T
current.namaMahasiswa ß nama current.jurusanMahasiswa ß jurusan current.ipkMahasiswa ß ipk
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.
Kondisi Daya Power Saver
Percobaan Percobaan 1 Percobaan 2 Percobaan 1 Percobaan 2
High Performance
Circular Double Linked List 2 ms 3 ms 1 ms 2 ms
Binary Search Tree 0 ms 0 ms 0 ms 0 ms
Tabel 4. Perbandingan waktu eksekusi update data 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.
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
mulai
indeks ß first cek ß true
indeks.getNim().compareTo(cari) <> 0
cek ß true
T
Y
indeks ß first
Y
removeFirst()
Y T "data berhasil di delete" indeks.getNext() ß first
Y
"data tidak ditemukan" indeks <> first && indeks <> last
T
Y
indeks.getPrev().setNext (indeks.getNext()) indeks.getNext().setPrev (indeks.getPrev())
T
cek ß false
T
removeLast();
indeks ß indeks.getNext()
"data berhasil di delete"
selesai
Fig. 12. Flowchar menghapus data pada circular double linked list.
"data berhasil di delete"
mulai
current ß root parent ß root isLeftChild ß true
current.nimMahasiswa.compareTo(key) <> 0
T
current.leftChild ß null & current.rightChild ß null
T
A
Y Y parent ß current
current ß root
key.compareTo(current.nimMahasiswa)<0
Y
isLeftChild ß true current ß current.leftChild
root ß null
Y
T
isLeftChildß true
Y
T
T isLeftChild ß false current ß current.rightChild
parent.rightChild ß null
current ß null
Y
return false
B T
Fig. 13.1 Flowchart fungsi untuk menghapus data pada binary search tree
parent.leftChild ß null
A
current.rightChild ß null
T
current.leftChild ß null
Y
current ß root
Y
Y
root ß null
isLeftChild
T
isLeftChild
successor ß getSuccessor(current)
T
Y
parent.leftChild ß current.rightChild
T
Y
parent.leftChild ß current.leftChild
Y
root ß successor
Y
parent.leftChild ß successor
T
parent.rightChild ß current.rightChild
isLeftChild
T
T
parent.rightChild ß current.leftChild
B
current ß root
parent.rightChild ß successor
successor.leftChild ß current.leftChild
return true
selesai
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.
Fig. 14. Nilai minum dari subtree sebelah kanan adalah 19
Fig. 15. Nilai pada node 12 dirubah menjadi 19
Fig. 16. Node 19 pada subtree 21 dihapus
Kerumitan dari penghapusan node pada binary search tree ini merupakan kelemahan dibandingkan dengan cirucal double linked list. Akan tetapi Kondisi Daya Power Saver
Percobaan Percobaan 1 Percobaan 2 Percobaan 1 Percobaan 2
High Performance
dibalik kerumitan tersebut binary search tree masih unggul dalam waktu eksekusi program. Untuk membuktikannya dapat dilihat pada Tabel 5. Circular Double Linked List 3 ms 2 ms 1 ms 1 ms
Binary Search Tree 0 ms 0 ms 0 ms 0 ms
Tabel 5. Perbandingan waktu eksekusi menghapus node
4. Hasil Penelitian 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. Circular Double Linked List Binary Search Tree 113 ms 168 ms 647 ms 568 ms 2 ms 0 ms 2 ms 0 ms 3 ms 0 ms 115 ms 128 ms 561 ms 497 ms 4 ms 0 ms 3 ms 0 ms 2 ms 0 ms 56 ms 64 ms 347 ms 472 ms 3 ms 0 ms 1 ms 0 ms 1 ms 0 ms 54 ms 66 ms 454 ms 400 ms 2 ms 0 ms 2 ms 0 ms 1 ms 0 ms
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 Percobaan Percobaan 1 Power Saver
Percobaan 2 Power Saver
–
–
Percobaan 1 – High Performance
Percobaan 2 – High Performance
Fungsi Memasukan Data Menampilkan Data Mencari Data Update Data Delete Data Memasukan Data Menampilkan Data Mencari Data Update Data Delete Data Memasukan Data Menampilkan Data Mencari Data Update Data Delete Data Memasukan Data Menampilkan Data Mencari Data Update Data Delete Data
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
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.
Fungsi Memasukan Data
Circular Double Linked List Eksekusi lebih cepat
Menampilkan Data
Eksekusi lambat
Mencari Data Update Data
Eksekusi lambat Eksekusi lambat
Delete Data
Eksekusi lambat
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. Binary Search Tree Eksekusi lebih lambat Eksekusi cepat, menggunakan memori lebih besar Eksekusi cepat Eksekusi cepat 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-9pertemua-9.pdf (diakses tanggal 28 Desember 2011)