Head to Head (H2H)… Java Linked List VS .Net Linked List….. Manakah yang lebih mudah di Implementasikan..??? @Struktur Data

Posted: 3 Oktober 2010 in programming
Tag:, , ,

pendekar .Net VS Java

Assalamu’alaikum Wr. Wb.

Seperti apa yang saya janjikan kali ini kita akan membahas Head to Head (H2H) mengenai Linked List di Java Maupun di .Net. Hmm Emang kuliah itu beda banget ma SMK. Kalo dulu kami diterangin satu per satu sampai benar2 faham tentang suatu konsep pemprograman, namun sekarang cuman kulitnya aja. Laennya disuruh cari sendiri. Bayangkan… Linked List yang lumayan mbulet ini cuman satu kali pertemuan lalu diberi tugas kayak gini. Tapi seru juga ce. Maaf yah kalo  Source Codenya dalam bentuk gambar…. Koq gak langsung aja di copy paste??? yah biar temen2 bisa menikmati “Proses” dari coding he he he…. selama beberapa hari saya pusing nie gara2 mikir linked list terus… tapi seru juga… waktu diterangin dikelas saya faham konsepnya…. namun pas coding agak bingung….  tapi akhirnya ketemu juga setelah beberapa hari maen petak umpet ma Linked List…… :p hmm saya ucapkan terimakasih pada komputerku Intel Pentium 2 400 MHz, Ram 256 Mb, hdd tinggal 100 mega an, trus jalan IDE dua yaitu Netbeans 6.0 dan Visual Studio 2005, plus google chrome, plus winamp, plus power point, plus acrobat read, All in one wes… saya sendiri bingung koq kuat yah…:p tapi itu lah mungkin barokahnya…. meski jadul namun bermanfaat….Yang hampir gak pernah mati. kadang2 tak tinggal tidur he he he. pagi baru dimatikan. Di akhir artikel akan ada penilaian langsung…. sebenernya Linked List ini punya banyak method… yang bikin sendiri… namun tidak saya tampilkan semuanya karena capek banget,,, apalagi beban saya ada 2, yaitu Bahasa Java n Bahasa VB .Net, plus nulis artikel… ini sumbernya…

  1. http://tutorialpemrograman.files.wordpress.com/2009/02/linked-list-tutorialpemrogramanwordpresscom.pdf
  2. http://uqifumi.files.wordpress.com/2009/12/linked-list.ppt

tolong sumber di atas dicantumkan dalam source code untuk menghormati dan menghargai mereka dalam berkarya… ^_^

KONSEP LINKED LIST

Ok kali ini kita bahas dahulu konsepnya….

Konsep Array Part 1

Kita bahas array dahulu sebagai pembandingnya. Array merupakan tipe struktur data static yang memori dialokasikan terlebih dahulu saat membentuk objeknya. Contohnya array dengan 5 element seperti gambar diatas. Lalu saat dihapus di tengah mungkin.

Konsep Array Part 2

saya hapus data pada index no 3. dihapus dengan cara diisi dengan karakter kosong. datanya saja yang hilang namun objek array index 3 (misal a(3) ) masih ada. Yang hilang datanya bukan objeknya. Alokasi memori masih ada untuk array tersebut. lalu bagaimana dengan Linked List?? Linked lust merupakan struktur data dinamic yang dapat berubah sesuai kebutuhan. Alokasi memori tergantung pada penggunaan node tersebut. memori baru dialokasikan ketika sebuah node dari linked list dibentuk. dan dihapus alokasi memoru ketika node di hapus. bedanya dengan array adalah array bisa diakses secara random dengan no indexnya namun linked list harus berantai mulai dari awal hingga akhir. namun bisa juga sebenernya melalui no index. sebuah node bisa dicari no indexnya.

Konsep Linked List Part 1

setiap node ada pointer untuk menunjukkan node selanjutnya. dalam hal ini penggunaan next saya rasa. ketika data pada node.next.next.next dihapus. proses sebenarnya adalah menggeser data pada node.next.next.next.next ke node.next.next.next (fika ==>  sama) sehingga node tersebut ditumpangi. jadi data “sama” terhapus karena ditumpangi oleh “fika”.

Konsep Linked List Part 2

jadi node yang ditinggalkan akan menjadi null. yang berarti akhir dari Linked List. Begitu pula saat sisip node baik di depan maupun di tengah atau di belakang. konsepnya menggeser node ke node selanjutnya. Hikz… hikz… kata2nya jadi saya mau makan fika…. kasihan fika….. mau dimakan…. kucing goreng jadinya….. hikz… hikz….. kangen ma fika….. sudah faham dengan konsepnya…???? Let’s Start…..

Java Linked List “Manual”

hmmm kenapa judulnya ada “manual” nya? karena ini adalah konsep dasar dalam memahami Linked List. ada cara instan untuk menggunakan linked list… namun kalo langsung pake yang instan apakah anda faham??? nanti akan dijelaskan juga penggunaan Java Collection Framework. perhatikan no baris code…

Java Linked List Part 1

Java Linked List Part 2

Java Linked List Part 3

Java Linked List Part 4

Java Linked List Part 5

Java Linked List Part 6

ya itu class nya…. berisi method2 untuk Linked List. Proses menggeser node menyebabkan node lain berubah posisinya. contohnya pada sisip pertama. yaitu node yang ada digeser ke belakang. lalu head dikasi data kota baru. waktu hapusPertama() itu node selanjutnya ditumpangkan ke node awal. head=head.next; ini kan menggeser posisi.

jika anda perhatikan… mengapa method hapusTertentu() berupa prosedur dan hapusPertama() berupa function??? (he he he istilahnya VB) prosedur itu tidak mengembalikan nilai, fucntion mengembalikan nilai. saya coba yang hapusPertama berupa prosedur dengan menggunakan void muncul pesan error…

Error Method type part 1

Error Method Type part 2

anda tahu mengapa? hmmm saya sendiri tidak begitu yakin…. namun Link hapusPertama() merujuk pada class Link… jika code diatas return saya ganti

return head;

tetap bisa menghapus node pertama. lalu apa maksunya ?? function bertipe Link berarti merujuk pada class Link. return temp merupakan bertipe referensi terhadap head. jadi apapun yang merubah head (dalam kasus ini head = head.next) akan terjadi juga pada temp. sekalipun mereferensinya diawal bukan diakhir(Link temp=head). karena temp referensi dari head lalu dilempar lagi ke class Link ini mempengaruhi node yang ada di class tersebut. jadi perubahan di function hapusPertama() merubaha node di class Link. faham???? yah pelan2 aja… saya sendiri yang nulis agak bingung juga soalnya….. sulit merepresentasikan apa yang ada di pikiran dan hati dengan kata2… loh koq jadi curhart…..🙂

lalu pertanyaan selanjutanya yang timbul… mengapa hapusTertentu(), replace(), dll tidak menggunakan method bertype fucntion?? bukankah sama2 berkonsep menggeser node?

la kalo ini saya emang bingung….. temp merujuk ke head, head merujuk ke node class Link…. koq bisa tidak pake method type function seperti di hapusPertama()…… ah gak tahu lah… tanyain ke dosennya….. aja…….. :p

sekarang implementasinya…

Implementasi part 1

Implementasi part 1

Implementasi part 2

udah faham kan??? kan ada comment nya

sekarang hasilnya…

Output part 1

Output part 2

bagaimana ??? kalo diperhatikan gaya penulisan codenya agak aneh yah??? hmm mirip VB karena udah kebiasaan pake VB he he he

sekarang yang Visual Basic .Net

penjelasaannya kurang lebih sama dengan yang Java karena codingnya saya mirip kan

Linked List VB .Net part 1

Linked List VB .Net part 2

Linked List VB .Net part 3

Linked List VB .Net part 4

Linked List VB .Net part 5

hmmm gimana sama aja bukan?? eh salah,,,, tidak sama…. dalam VB .Net variable dalam class yang berbeda tidak bisa diakses seenaknya saja. dibutuhkan accessor. yah untuk mengaksesnya pake accessor. class LinkedList untuk mengakses variable dalam class Link menggunakan accessor property namaKota() dan linkNext(). perhatikan baris 18-35.  get digunakan untuk mengambil value dari variable sebenarnya. return bla bla bla. sedangkan set untuk melakukan perubahan terhadap variable sebelumnya. byval value as string contohnya. value ini dimasukkan ke variable sebenarnya. jadi untuk mengakses variable sebenarnya jika beda class dipake accessor. butuh bab tersendiri untuk menjelaskan accessor. jadinya nama variable asli bisa tidak nampak karena yang digunakan adalah accessor.  kalo secara garis besar sama aja kayaknya.

outputnya

Output Linked List Manual VB .Net

STOP !!!!!!!

JANGAN DILANJUTKAN MEMBACA ARTIKEL JIKA KONSEP DI ATAS BELUM ANDA PAHAMI

Java Collections Framework

Saya tanyakan sekali lagi… apa sudah faham konsepnya? setelah capek2 buat class sendiri mari kita pake yang instan.

daftar method Java Linked List

sudah ada method2 yang siap pakai…

Java Collections Framework part 1

Java Collections Framework part 2

output

output Java Collections Framework

eh di .Net juga ada loh

Linked List instan VB .Net part 1

Linked List instan VB .Net part 2

Linked List instan VB .Net part 3

yah disini tidak ada method set dan indexof. di java bisa mengakses no indexnya. setelah no index ketemu kemudian di set no index tersebut dengan nama Sidobaru. sayang sekali di .Net belum ada. sehingga harus mencari apakah sidoarjo ada (a.contains(“Sidoarjo”)) jika ada baru mengambil posisi sidoarco menggunakan variable current yang diisikan node dari a.find(“Sidoarjo”).  lalu mensisipkan setelah posisi sidoarjo(current) dengan sidobaru( sidoarjo –> sidobaru). setelah disisipkan baru sidoarjo di remove. hemmm gak ada 2 fungsi jadi agak repot juga nie…. tapi hasilnya sama.

Output Linked List Instal VB .Net

Penilaian

so dalam serial H2H kali ini siapa yang menang???

yah pemenangnya adalah Java….. selamat buat Java karena punya method set dan index of….. sayang sekali .Net belum punya method tersebut. lagipula Java bisa mengakses node melalui no index. kalo .Net benarnya nodenya .coba perhatikan line 63. posisi dalam current itu bukan index. tapi pointer kayaknya…..

tapi disini VB .Net punya accessor….. dan sepertinya methodnya juga lebih banyak…..

coba lihat link ini http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx

dalam kasus ini Linked List Java lebih mudah diimplementasikan karena ada method set dan indexof  saja…. selebihnya tidak beda…

ok tunggu serial H2H selanjutnya…..

biasanya akan sesuai dengan tugas matakuliah…

Oh ya,,,, ada yang udah tertarik dengan VB .Net ???

Wassalamu’alaikum Wr. Wb.


Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s