LINKED LIST, SORTING, & SEARCHING
1. LINKED LIST
Linked list merupakan salah satu struktur data fundamental dalam
membangun program. Sesuai namanya, linked list terdiri dari deretan node (yang
berisikan data) dan link ke_node_lainnya.
Merupakan suatu struktur data pengembangan dari konsep ADT
(Abstrak Data Type) yang bersifat dinamis. Linked List dapat dimanfaatkan
secara effektif sesuai dengan keperluan. Linked List juga dapat benar – benar
dihapus / dibersihkan dari memory.Linked List sebenarnya merupakan suatu
typedata tersendiri. Ciri – ciri utama dari Linked List adalah, dia mempunyai
minimal dua elemen utama. Elemen – elemen itu adalah data dan pointer untuk
menunjukkan ke list berikutnya.
Kita akan lebih efektif jika kita menggunakan konsep Linked List
jika kita memerlukan suatu pengaksesan pada struktur data yang lebih dinamis.
Konsep yang lebih cocok menggunakan linked list adalah : Stack, Queue, Tree,
dan Graph.
Hal ini dikarenakan
oleh sifat dinamis dari Linked List. Kita tidak perlu untuk mengetahui berapa
block memory yang akan kita akses. Jadi, jika kita butuh block baru pada
memory, tinggal menyisipkan pada kanan atau kiri list yang telah ada.
Untuk deretan node
yang memiliki satu link ke node lain, kita menyebutnya sebagai singly-linked
list, atau single linked list. Singly-linked list bisa
diilustrasikan dengan barisan di mana setiap anggota barisan (node) berbaris
menghadap ke satu arah dan anggota barisan memegang bahu anggota di depannya
(link). Anggota paling depan cukup memegang udara kosong (null).
Untuk deretan node
yang memiliki dua link ke node-node lain, kita menyebutnya sebagai doubly-linked
list atau double linked list. Doubly-linked list bisa
diilustrasikan dengan deretan orang di mana tangan kiri setiap anggota memegang
tangan kanan anggota di sebelah kiri, dan tangan kanannya memegang tangan kiri
anggota di sebelah kanan. Tangan kiri anggota paling kiri memegang udara
kosong. Demikian juga dengan anggota paling kanan yang memiliki nasib sama:
tangan kanannya memegang udara kosong. Linked list bisa disusun linear atau
circular. Ketika disusun circular, pada singly-linked list, anggota barisan
yang tadi kita bahas tidak lagi memegang udara kosong, namun memegang bahu
anggota paling belakang. Jadi, tidak pegel. Untuk circular doubly-linked list
(atau doubly circularly linked list), nasib anggota paling kiri dan paling
kanan juga berubah. Tangan kanan anggota paling kanan memegang tangan kiri
anggota paling kiri. Struktur data fundamental ini sangat berguna. Jadi,
mahasiswa ilmu komputer yang mempelajari struktur data ini harus
sungguh-sungguh mempelajarinya, walaupun harus berpusing-pusing. Linked list
sendiri sudah berumur cukup tua dan dikembangkan_sejak_tahun_1955-56.
Struktur Linked List
dalam Bahasa C
Struktur Data – Macam –
macam Linked List, berikut merupakan
macam – macam linked list :
ü Singly Linked List :
Setiap node pada
linked list mempunyai field yang berisi pointer ke node berikutnya dan juga
memiliki field yang berisi data.
Akhir linked list
ditandai dengan node terakhir akan menunjuk ke null yang akan digunakan sebagai
kondisi berhenti saat pembacaan linked list.
ü Double Linked List :
Linked list dengan
menggunakan pointer, dimana setiap node memiliki 3 field, yaitu: 1 field
pointer yang menunjuk ke pointer berikutnya, 1 field pointer yang menunjuk ke
pointer sebelumnya dan field yang berisi data dari node tersebut. Pointer next
dan prev-nya menunjuk ke null.
ü Single Circular Linked List :
Single Linked List
yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa
node maka pointer terakhirnya akan menunjuk ke pointer terdepannya.
ü Double Circular Linked List :
Double Linked List
yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.
Jika dilihat
pengaksesannya, Linear dan Circular Linked List dapat dibedakan sebagai berikut
:
|
Linear
Linked List
|
Circular
Linked List
|
|
Tail.next dihubungkan ke null
|
Tail.next dihubungkan ke head
|
|
Pada perulangan, akan break pada
now = null
|
Pada perulangan, akan break pada
now = null
|
|
Method lebih sederhana
|
Method lebih sulit debandingkan
dengan Linear linked list
|
|
Algoritma akan lebih sulit jika
kita melakukan penyelesaian masalah dengan menggunakan konsep circular queue
|
Akan lebih mudah pada konsep –
konsep tertentu salah satunya seperti konsep queue.
|
Apa itu Simpul dan Ekor
Daftar linier (Linear
List) adalah suatu struktur data umum yang terbentuk dari barisan hingga
(yang terurut) dari satuan data, atau pun dari record.
Elemen dari daftar
linier disebut simpul atau node. Daftar ini disebut linier karena susunan elemennya adalah
linier, yaitu bahwa bagi setiap elemen selalu ada elemen setelah dan
sebelumnya, kecuali pada elemen pertama dan terakhir.
Banyaknya simpul dalam
suatu daftar linier dapat berubah-ubah, berbeda dengan array yang jumlah
elemennya selalu tetap. Penyisipan simpul berarti menambah suatu simpul/elemen
baru ke dalam sebuah
list.
Dengan Head dan tail
ü Menggunakan 2 pointer, head dan tail.
ü Head selalu menunjuk node pertama dan tail selalu menunjuk node terakhir
Kelebihandari Single
Linked List dengan Head & Tail adalah padapenambahan data di belakang,
hanyadibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan
perulangan pointer bantu.
2. Sorting
Sorting
atau pengurutan adalah proses menyusun elemen – elemen dari masukan awal acak
menjadi keluaran akhir tertata dengan urutan tertentu. Proses tersebut
diimplementasikan dalam bermacam aplikasi. Contoh penerapannya antara lain
berupa rincian transaksi sesuai urutan tanggal dan jam pada perbankan, daftar
hadir yang diurutkan berdasarkan nomor induk dan daftar pustaka yang diurutkan
sesuai abjad pengarang ataupun katalog buku di perpustakaan. Fungsi-fungsi
statistik seperti median dan pembuatan kuartil data (quarter), desil dan
percentil (percentile) mensyaratkan data untuk diurutkan terlebih dahulu.
Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat
mendasar dan sering digunakan. Oleh karena itu, pemahaman atas algoritma –
algoritma yang ada sangatlah berguna. Selain menjadi suatu 2 aplikasi yang
berdiri sendiri, pengurutan juga biasanya menjadi suatu bagian dari algoritma
yang lebih besar.
- Insertion Sort
Salah satu
algoritma sorting yang paling sederhana adalah insertion sort. Insertion Sort
disebut-sebut sebagai metode pertengahan. Artinya, metode ini memiliki
kecepatan ratarata antara metode primitif (bubble dan selection) dan modern
(merge dan quick) . Metode ini, didasarkan pada sebuah kunci yang diambil pada
elemen ke-2 pada sebuah larik, lalu menyisipkan elemen tersebut jika kondisi
percabangan terpenuhi. Metode penyisipan (insertion) bertujuan untuk menjadikan
bagian sisi kiri larik terurutkan sampai dengan seluruh larik berhasil
diurutkan.
- Selection Sort
Merupakan kombinasi antara sorting dan searching. Untuk setiap proses,
akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil
atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya
untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan
ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data
kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses,
pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja,
pertukaran data secara fisik terjadi pada akhir proses.
3. SREACHING
Searching berarti pencarian suatu situs yang belum kita ketahui
secara pasti alamat yang dimiliki. Dalam melakukan searching biasanya kita
gunakan search engine sebagai mesin pembantu dalam pencarian situs
tersebut.Search engine adalah sebuah fasilitas (web) yang bisa mencari links
dari situs lain. Ada berbagai macam search engine yang bisa kita gunakan dalam
searcing, yaitu ; yahoo, google, altavista, lycos, astaga, msn, dan lain
sebagainya.
Pencarian(searhing) merupakan proses yang sangat penting dalam
pengolahan data. Proses pencarian adalah menemukan nilai(data) tertentu didalam
sekumpulan data yang bertipe sama. Sebuah algoritma pencarian dijelaskan secara luas adalah sebuah
algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah
solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa
kemungkinan solusi. Algoritma pencarian (searching algorithm) adalah algoritma
yang menerima sebuah Kata kunci dan dengan langkah-langkah tertentu akan
mencari rekaman dengan kata kunci tersebut. Setelah proses pencarian
dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang
dicari ditemukan atau tidak ditemukan. Macam-macam Algoritma (Searching):
· - Pencarian sekuensial
(Sequential searching)
Pencarian Sekuensial (sequential searching) atau pencarian berurutan sering
disebut pencarian linear merupakan metode pencarian yang paling sederhana.
Pencarian beruntun adalah proses yang membandingkan setiap elemen larik satu
per satu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari
ditemukan atau seluruh elemen sudah diperiksa.
· - Pencarian Biner (binary search)
Terdapat metode pencarian pada data terurut yang paling efficient,
yaitu metode pencarian bagi dua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang
cepat. Prinsip pencarian dengan membagi data atas dua bagian mendasari metode
ini. Data yang disimpan di dalam larik harus sudah terurut.data terurut yang
paling efficient, yaitu metode pencarian bagidua atau pencarian biner(binary
search).

Komentar
Posting Komentar