Anda di halaman 1dari 27

Nama : DHIMAS KURNIAWAN

NIM : 0701213155

Mata Kuliah : Struktur Data

MATERI I

Abstrac Data Type

Penjelasan

Tipe data abstrak atau yang dikenal sebagai Abstract Data Type adalah model matematika dari obyek data
yang menyempurnakan tipe data dengan cara mengaitkannya dengan fungsi-fungsi yang beroperasi pada
data yang bersangkutan. Tipe data abstrak adalah tipe data yang didefinisikan sendiri oleh pemrogram
untuk suatu keperluan tertentu yang tidak memungkinkan untuk mendeklarasikan dari tipe data yang sudah
ada. Contoh tipe data abstrak adalah stack, queue, list, tree, graph, dan lain-lain.

Harus dibedakan antara pengertian struktur data dan tipe data abstrak. Struktur data hanya memperlihatkan
bagaimana data-data di organisir, sedangkan tipe data abstrak mengemas struktur data tertentu sekaligus
dengan operasi-operasi yang dapat dilakukan pada struktur data tersebut. Dengan demikian, definisi umum
tentang tipe data abstrak dapat dipahami bahwa tipe data abstrak adalah struktur data yang mengandung
operasi-operasi atau aturan-aturan tertentu. Pada sub bab selanjutnya akan dibahas beberapa jenis tipe data
dari tipe data – tipe data yang telah disebutkan sebelumnya.

Abstrac Data Type adalah koleksi data atau operasi yang dapat digunakan untuk memanipulasi data
tersebut.Di dalam c++,ADT dapat dibuat dalam class.Class dalam c++ merupakan pengembangan dari
struct dalam bahasa pemrograman C.ADT biasanya diimplementasikan menjadi dua modul :

1. Definisi/spesifikasi dari Type dan Primitif.


Spesifikasi Type sesuai bahasa sedangkan spesifikasi Primitif sesuai Konteks.
2. Body berupa kode program.
Supaya ADT dapat diuji tuntas ,maka harus dilengkapi dengan program utama yang mengandung
pemakaian terhadap setiap primitive dalam ADT disebut sebagai DRIVER.
Pemaparan

Contoh Abstrac Data Type

 Tipe Jadi(Built-in)
Integer,array,real,Boolean,Floating, Character
 Tipe Buatan (User-defined)
Stack,Queue,Tree String, Enumerated Date

Contoh Spesifikasi Data Abstrak

Elements : Nilai elemennya adalah karakter ‘a’-’z’,’A’-’Z’, dan termasuk juga spasi. Kita sebut nilai-nilai
tersebut sebagai kumpulan karakter (letters).

Structure : Terdapat hubungan secara linear di antara elemen letters di dalam suatu string.

Domain : letterstring berisi 0 sampai 80 karakter. Domain dari tipe letterstring adalah seluruh
kemungkinan nilai yang memenuhi aturan-aturan tersebut.

Operations :
letter leftletter( letterstring s)
Kondisi awal :Jumlah karakter input s minimal 1.
Kondisi akhir :leftletter berisi karakter awal (paling kiri) di dalam string s.

append( letter l; letterstring s)


Kondisi awal : Jumlah karakter input s kurang dari 80.
Kondisi akhir :String s lebih panjang dibandingkan sebelumnya, dan isi l adalah karakter terbaru dan
berada paling kanan di dalam s.

boolean empty( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Jika s tidak berisi satupun karakter maka empty bernilai true selain itu empty bernilai false.

boolean full( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Jika s berisi 80 karakter maka full bernilai true selain itu full bernilai false.

reverse ( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Urutan dari isi s dibalik, sehingga elemen pertama dan terakhir bertukar tempat, elemen
kedua dari awal dan kedua dari akhir bertukar tempat, demikian seterusnya.

Dengan memilih bahasa C sebagai bahasa yang akan digunakan untuk penulisan program, maka
representasi dan implementasinya adalah sebagai berikut :

Representation
struct letterstring {
int n;
letter str[80];
};

Implementation
int empty( letterstring s ) {
if (s.n<1) return(1); else return(0);
};

int full( letterstring s ) {


if (s.n>=80) return(1); else return(0);
};

void append( letter l; letterstring *s) {


if (s.n<80)
s.str[++s.n] = l;
};

letter leftletter( letterstring s) {


if (s.n>0)
return(s.str[0] );
};

void reverse ( letterstring *s ) {


int i; letterstring temp;
for(i=0;i<80;i++) temp.str[i] = temp.str[80-i+1];
for(i=0;i<80;i++) s.str[i] = temp.str[i];
};
MATERI II

ARRAY

Penjelasan

Array dapat diartikan sebagai sesuatu yang berbarisatau berderet-deret. Dalam bahasa
pemrograman array adalah variable sejenis yang berderet-deret sedemikian rupa sehingga alamatnya saling
bersambung atau bersebelahan/ berdampingan (contiguous) . Sebuah array digunakan untuk memproses
kumpulan data yang semuanya berjenis sama, seperti daftar suhu atau daftar nama . Array termasuk dalam
struktur data statis, artinya adalah lokasi memoriuntuk suatu array tidak dapat ditambah atau dikurangi
selama program dijalankan.

 Mendeklarasikan Array
Pada program C ++, array yang terdiri dari lima variabel tipe int dapat dideklarasikan sebagai
berikut:

Variabel individu yang bersama-sama menunjuk array dalam variasi dengan cara yang berbeda.
Kita akan menyebutnya variabel yang diindeks, meskipun mereka juga kadang-kadang disebut
variabel atau elemen yang diikutsertakan dalam array. Nomor dalam tanda kurung siku disebut
indeks atau subskrip. Dalam C ++, indeks diberi nomor dimulai dengan 0, tidak dimulai dengan 1
atau angka lain apa pun kecuali 0. Bilangan variabel yang diindeks dalam array menunjuk ukuran
array yang dideklarasikan, atau terkadang hanya ukuran array. Ketika sebuah array dideklarasikan,
ukuran dari array tersebut diberikan tanda kurung siku setelah nama array. Variabel yang diindeks
kemudian diberi nomor (juga menggunakan tanda kurung siku), dimulai dengan 0 dan diakhiri
dengan bilangan bulat yaitu satu.

Pemaparan

a. dalam memori
variabel sederhana dalam memori dijelaskan oleh dua bagian informasi: alamat dalam
memori (memberikan lokasi byte pertama untuk variabel itu) dan jenis variabel, yang
memberi tahu berapa byte memori yang dibutuhkan variabel. Ketika kita berbicara tentang
alamat variabel, alamat inilah yang sedang kita bicarakan. Ketika program Anda
menyimpan nilai dalam variabel, yang sebenarnya terjadi adalah bahwa nilai (dikodekan
sebagai nol dan satu) ditempatkan dalam byte memori yang ditetapkan ke variabel itu.
Demikian pula, ketika sebuah variabel diberikan sebagai argumen (panggilan-oleh-
referensi) ke suatu fungsi, itu adalah alamat variabel yang sebenarnya diberikan ke fungsi
pemanggil. Sekarang mari kita lanjutkan untuk membahas bagaimana array disimpan dalam
memori. Variabel yang diindeks array direpresentasikan dalam memori dengan cara yang
sama seperti variabel biasa, tetapi dengan array ada sedikit lebih banyak cerita. Lokasi
berbagai variabel yang diindeks larik selalu ditempatkan bersebelahan dalam memori.

b. Array dalam fungsi


Variabel yang diindeks dapat menjadi argumen ke suatu fungsi dengan cara yang persis
sama seperti variabel apa pun yang dapat menjadi argumen. Misalnya, program berisi
deklarasi berikut:
int i, n, a[10];
Jika my_function mengambil satu argumen bertipe int, maka bentuk dibawah ini
diperbolehkan :
my_function(n);
Suatu fungsi dapat memiliki parameter formal untuk seluruh array sehingga ketika fungsi
tersebut dipanggil, argumen yang dipasang untuk parameter formal ini adalah seluruh array.
Namun, parameter formal untuk seluruh array bukanlah parameter call-by-value atau all-by
reference.

 Array Multidimensi
Variabel yang diindeks untuk array ini masing-masing memiliki dua indeks. Misalnya, page [0]
[0], page [15] [32], dan page [29] [99] adalah tiga variabel yang diindeks untuk array ini.
Perhatikan bahwa setiap indeks harus diapit oleh kumpulan tanda kurung siku sendiri. Seperti
halnya array satu dimensi yang telah kita lihat, setiap variabel yang diindeks untuk array
multidimensi adalah variabel tipe dasar.
Sebuah array mungkin memiliki sejumlah indeks, tetapi mungkin jumlah indeks yang paling
umum adalah dua. Array dua dimensi dapat divisualisasikan sebagai tampilan dua dimensi dengan
indeks pertama memberikan baris dan indeks kedua memberikan kolom. Misalnya, variabel yang
diindeks array dari page array dua dimensi dapat divisualisasikan sebagai berikut:
page[0][0], page[0][1], ..., page[0][99]
page[1][0], page[1][1], ..., page[1][99]
page[2][0], page[2][1], ..., page[2][99]
...
page[29][0], page[29][1], ..., page[29][99]
Anda dapat menggunakan array page untuk menyimpan semua karakter pada halaman teks yang
memiliki 30 baris (bernomor 0 hingga 29) dan 100 karakter pada setiap baris (bernomor 0 hingga
99).

Deklarasi array dua dimensi berikut sebenarnya mendeklarasikan array satu dimensi berukuran
30, yang jenis dasarnya adalah array satu dimensi dengan karakter berukuran 100. charpage[30]
[100]; Melihat array dua dimensi sebagai array dari array akan membantu kita memahami
bagaimana C ++ menangani parameter untuk array multidimensi.
MATERI III
SEARCHING

Penjelasan

Pencarian (Searching) merupakan tindakan untuk mendapatkan suatu data dalam kumpulan data
berdasarkan satu kunci (key) atau acuan data. Dalam kehidupan sehari-hari, seringkali kita berurusan
dengan pencarian; misalnya untuk menemukan nomor telepon seseorang pada buku telepon atau mencari
istilah dalam kamus, dan masih banyak lagi. Pada aplikasi komputer, pencarian kerapkali dilakukan.
Misalnya untuk proses penghapusan data/record atau mengubah data/record tertentu di dalam suatu tabel
atau file, langkah pertama yang harus dilakukan adalah mencari apakah data tersebut terdapat di dalam
tabel/file atau tidak. Jika ada maka dapat dihapus atau diubah.

Kegunaan beberapa struktur data dalam hubungannya untuk menyimpan data sehingga memudahkan
proses pencarian kembali tergantung pada:

 Media penyimpanan data (memori, disk, tape).


 Karakteristik jenis data yang disimpan (data numerik/character/string).
 Jumlah data yang akan disimpan dan keperluan untuk akses data secepat-cepatnya.

Searching adalah pencarian data dengan cara menelusuri data-data tersebut.Tempat pencarian data
dapat berupa array dalam memori,bisa juga pada file pada external storage.
Searching

Pemaparan

Array dibagi menjadi 4 jenis


1. Sequential Searching
Adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri semua
elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih
dahulu.
Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array
terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat
sebentar (minimal).
Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array
terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat
lama (maksimal).
Misalnya terdapat array satu dimensi sebagai berikut ;

Kemudian program akan meminta data yang akan dicari, misalnya 6.Jika ada maka akan
ditampilkan tulisan “ADA”, sedangkan jika tidak ada maka akan ditampilkan tulisan “TIDAK
ADA”.
2. Sequentil with sentinel
Perhatikan array data berikut :

Terdapat 6 buah data dalam array (dari indeks 0 s/d 5) dan terdapat 1 indeks array tambahan
(indeks ke 6) yang belum berisi data (disebut sentinel)
Array pada indeks ke 6 berguna untuk menjaga agar indeks data berada pada indeks 0 s/d 5
saja. Bila pencarian data sudah mencapai array indeks yang ke-6 maka berarti data TIDAK
ADA, sedangkan jika pencarian tidak mencapai indeks ke-6, maka data ADA.
3. Binary Search
Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang
dijadikan kunci pencarian.
Adalah teknik pencarian data dalam dengan cara membagi data menjadi dua bagian setiap
kali terjadi proses pencarian.
Prinsip pencarian biner adalah:
▪ Data diambil dari posisi 1 sampai posisi akhir N
▪ Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2
▪ Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih
kecil, atau lebih besar?
 Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah +
1
 Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah –
1
 Jika data sama, berarti ketemu.
4. Interpolasi
Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu . Teknik
searching ini dilakukan dengan perkiraan letak data.
Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku telepon, misal yang
berawalan dengan huruf T, maka kita tidak akan mencarinya dari awal buku, tapi kita langsung
membukanya pada 2/3 atau ¾ dari tebal buku.
Rumus posisi relatif kunci pencarian dihitung dengan rumus :
MATERI IV

REKURSIF

Penjelasan
Rekursif adalah suatu proses dari sebuah fungsi yang dapat memanggil dirinya sendiri secara
berulang-ulang. Berbeda dengan fungsi atau prosedur yang mana keduanya hanya bisa dilakukan
pemanggilan dari fungsi atau prosedur lain, sementara rekursif dapat memanggil fungsinya sendiri. Fungsi
rekursif c++ ini akan berjalan dengan melakukan proses sampai sebuah kondisi yang ditetapkan pada
fungsi tersebut terpenuhi.

Untuk beberapa kasus, fungsi rekursif bisa lebih efisien, tapi penulisannya memang tidak mudah
dan sering terjadi error / infinity loop. Selain itu tidak semua masalah bisa dipecahkan dengan fungsi
rekursif, menghitung faktorial menjadi contoh penerapan yang banyak dipakai untuk membuat fungsi
rekursif.

Fungsi rekursif biasanya digunakan untuk menyelesaikan permasalahan yang memiliki keteraturan
pola dalam prosesnya, contohnya dalam menyelesaikan soal menampilkan deret bilangan. Salah satu
kelebihan penggunaan fungsi rekursif adalah secara penulisan code program akan lebih singkat dan efektif.
Namun kekurangannya tidak terlalu efektif secara performa dan waktu eksekusi program karena fungsi
rekursif membutuhkan resources memory yang lebih besar. Dan jika tidak hati-hati dalam mendefinisikan
proses di dalam fungsi rekursif, seringkali menghasilkan proses yang tidak pernah berhenti (infinitive
process).

Salah satu contoh yang paling mudah untuk menjelaskan fungsi rekursif adalah faktorial. Kita tahu
bahwa dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif
yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! Dan disebut n faktorial. Sebagai contoh
5! = 5 x 4 x 3 x 2 x 1 = 120

Jika dilihat dari keteraturan pola dalam menghitung nilai faktorial suatu bilangan, maka dapat
diselesaikan dengan menggunakan fungsi biasa maupun fungsi rekursif. Perhatikan dan bandingkan kedua
program berikut ini dimana program pertama tanpa rekursif dan program kedua dengan rekursif.

Pemaparan

1. Fungsi cetak ke layar


Fungsi ini mencetak nilai dari paremeter yang dilempar kepadanya. Jika nilai dari
parameter tersebut > 0, fungsi akan mencetak nilai dari parameter tersebut dan kemudian
memanggil dirinya lagi, jika tidak, program berhenti.

2. Fungsi pangkat

Fungsi ini digunakan untuk menghitung nilai: Xn dengan n berupa bilangan bulat positif

3. Fungsi faktorial

Faktorial dapat dibuat dengan menerapkan rekursi.


MATERI V

STACK

Penjelasan

Istilah stack dalam c++ adalah tumpukan, tumpukan sendiri dalam bahasa kita adalah pengumpulan
sebuah data lalu menaruh data tersebut ke dalam data-data lain yang sudah di tata sebelumnya, jadi metode
peletakan beberapa data di atas data-data lain itulah yang disebut stack.

Secara mudahnya misalkan kita ingin mengambil beberapa buku yang ada di rak perpustakaan untuk
dipindahkan ke rak buku lainya, lalu dalam pengambilan beberapa buku yang ada di perpustakaan tersebut,
sebelum dipindahkan kita mengambil satu persatu buku dari perpustakaan lalu menatanya menjadi satu
tumpukan bukan ? nah tumpukan buku tersebutlah yang dinamakan stack.

Dari penerapan diatas bisa disimpulkan bahwa stack itu mempunyai konsep LIFO (Last In First
Out) artinya terakhir kali dimasukan akan keluar dahulu, maksudnya jika kita membuat tumpukan dari atas
ke bawah seperti penerapan diatas, maka ketika kita mengambil satu persatu tumpukan tersebut pasti dari
atas ke bawah bukan ? tidak mungkin dari bawah keatas karena akan menghambat waktu penataan buku
tersebut.

Pemaparan

USH adalah operasi untuk menambahkan stack(data tumpukan) dalam program, kita harus bisa
menambahkan satu persatu elemen dalam program untuk bisa dijadikan data stack, yang otomatis
menambahkan data tanpa mereplacenya anda bisa menggunakan ARRAY untuk menampung datanya.

sebelum kita mulai koding, ada baiknya kita memahami bagaimana Algoritma Stack dapat bekerja.
ada 2 operasi dasar yang harus ada dalam algoritma stack yaitu

 Push() – Memasukan data

 Pop() – menghapus data

pada gambar diatas terlihat illustrasi cara kerja algoritma stack, dimana ketika awal pembuatan list, list
tersebut tidak memiliki nilai, namun ketika kita melakukan perintah push maka data baru akan
ditambahkan diujung list tersebut.

dan ketika kita menjalankan perintah pop maka data terakhir dari sebuah list akan dihapus.

push bekerja dengan cara mencari nilai top atau nilai ujung dari suatu list dan menambahkan data baru di
depan data top tersebut.

pop pun sama, ia bekerja dengan cara mencari nilai top atau nilai ujung dari suatu list dan menghapus data
tersebut

Input
Output
MATERI VI

QUEUE

Penjelasan

Queue adalah struktur data linier yang menerapkan prinsip operasi dimana elemen data yang masuk
pertama akan keluar lebih dulu. Prinsip ini dikenal dengan istilah FIFO (First In, First Out). Contoh nyata
dalam kehidupan sehari-hari yang dapat menggambarkan struktur data queue adalah barisan orang yang
menunggu untuk membeli tiket di gedung bioskop.

Orang yang baru datang akan bergabung dengan barisan dari ujung dan orang yang berdiri di depan akan
menjadi yang pertama mendapatkan tiket dan meninggalkan barisan. Demikian pula dalam struktur data
queue, data yang ditambahkan terlebih dahulu akan meninggalkan antrian terlebih dahulu.

Suatu bentuk khusus dari linier list dengan operasi pemasukan data hanya diperbolehkan pada
salah satu sisi saja dimana pengisian dan pengambilan datanya dirancang berdasarkan algorithma FIFO
(First in First out) atau FCFS (First Come First Serve). Operasi pengisian hanya boleh dilakukan pada sisi
belakang (Rear) / ekor (Tail); dan Operasi penghapusan hanya diperbolehkan pada sisi depan (Front) /
kepala (Head). Queue adalah sebuah struktur data yang aksesnya bersifat sekuensial (berurutan).

Pemaparan

Struktur/Bagian Queue:

 Front/Head
Merupakan indeks elemen paling depan dari queue.
 Rear/Tail
Merupakan indeks elemen paling belakang dari queue.
 Noel
Merupakan jumlah elemen yang tersimpan dalam queue.

Fungsi pada Stack

1. Fungsi Create()
Digunakan untuk membuat queue baru yang masih kosong.
2. Fungsi isEmpty()
Digunakan untuk menguji apakah queue kosong atau tidak kosong.
3. Fungsi isFull()
Digunakan untuk menguji apakah queue penuh atau tidak penuh.
4. Fungsi Insert()
Digunakan untuk melakukan pengisian data ke dalam queue pada REAR/TAIL.
5. Fungsi Remove()
Digunakan untuk mengeluarkan data yang tersimpan pada FRONT/HEAD pada queue.
6. Fungsi Clear()
Digunakan untuk menghapus seluruh elemen dari queue.
MATERI VII
LINKED LIST

Penjelasan

Linked list adalah sejumlah simpul (node) yang dikaitkan dengan simpul yang lain dengan bantuan pointer
dalam suatu urutan tertentu. Suatu linked list dikatakan single linked list apabila hanya ada satu pointer
yang menghubungkan setiap node (satu arah “next”).

ATURAN LINKED LIST


1. Data harus memiliki hubungan dengan yang lain.
2. Data yang terhubung tidak boleh bercabang.

PERANCANGAN LINKED LIST

1. Single Linked List C++


Tahapan pertama ialah membuat struct (karena setiap node akan berbentuk struct) Dan memiliki satu buah
fungsi pointer juga bertype struct yang akan menghubungkan setiap node .

2. Double Linked List C++


Lain Halnya dengan single List, double Linked List adalah suatu linked list yang mempunyai 2 penunjuk
ke data sebelumnya dan berikutnya, memiliki 2 buah pointer, setiap node akan terhubung dengan pointer
kanan dan kiri.
.

Setiap simpul terdiri atas dua bagian yaitu :

1. Berisi informasi data

2. Merupakan field link atau nextpointer.


Pemaparan

Link menghubungkan satu elemen data ke elemen data lainnya, sehingga urutan elemen data tersebut
membentuk suatu linier list. Link akan bernilai = 0 bila tidak menuding ke data (simpul) lainnya. Penuding
ini disebut Penuding Nol.

Disajikan dalam bentuk sebagai berikut :

1. Array INFO(K) : menyajikan bagian informasi

2. Array LINK(K) : field nextpointer

3. Variabel START : untuk menyimpan alamat dari elemen LIST Pada bagian akhir dari LIST, nextpointer
bernilai NULL.

Traversal atau kunjungan simpul list sesuai urutan untuk memproses setiap simpul tepat satu kali.
Algoritma traversal, menggunakan variabel penuding PTR untuk menuding simpul yang sedang di proses
saat ini. Karena itu LINK(PTR) akan menuding simpul berikut dalam list. Statement

PTR := LINK(PTR)

akan menggerakkan penuding ke simpul berikutnya.

Algoritma

1. PTR := START.

2. Kerjakan Langkah 3 dan 4 dalam hal PTR <> NULL :

3. Proses INFO(PTR).

4. PTR := LINK(PTR).

5. EXIT.

Cara (Searching)dalam linked list

1. Cari dalam list tidak terurut


2. Cari dalam list terurut
MATERI VIII
TREE

Penjelasan

Dalam ilmu komputer, tree adalah sebuah struktur data yang secara bentuk menyerupai sebuah
pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan. Node-node tersebut
dihubungkan oleh sebuah vektor. Setiap node dapat memiliki 0 atau lebih node anak (child). Sebuah node
yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk.
Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon di dunia nyata yang tumbuh
ke atas. Dengan demikian node anak akan digambarkan berada di bawah node induknya. Node yang
berada di pangkal tree disebut node root (akar), sedangkan node yang berada paling ujung pada piramida
tree disebut node leaf (daun).

Binary Tree (Pohon Biner)

Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum 2
(dua) simpul anak. Tidak boleh lebih. Pada pohon biner, umumnya kedua node anak disebut dengan
posisinya, yaitu kiri dan kanan.

Beberapa istilah pada pohon biner:

 Size (ukuran): jumlah total node yang terdapat pada pohon biner tersebut.
 Depth (kedalaman): panjang jalur yang menghubungkan sebuah node sampai ke node anaknya
yang paling ujung (leaf). Depth biasa juga disebut height.
1. Full Binary Tree (Pohon Biner Penuh) adalah pohon biner yang setiap nodenya pasti memiliki 0
atau 2 node anak.
2. Perfect Binary Tree (Pohon Biner Sempurna) adalah pohon biner yang semua node leafnya berada
pada kedalaman yang sama dari node root. Juga disebut sebagai Complete Binary Tree (Pohon
Biner Lengkap)
3. Almost Complete Binary Tree (Pohon Biner Hampir Lengkap) adalah pohon biner yang setiap
nodenya dapat memiliki 0 node anak, atau memiliki kiri, atau jika memiliki kanan harus memiliki
kiri. Tidak boleh memiliki kanan saja.

Pemaparan

Deklarasi Tree

Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan adalah komponen node itu
sendiri. Dalam contoh dibawah, akan kita namai Node. Sebelumnya perlu kita lihat bahwa untuk
mewujudkan implementasi node ke dalam bahasa pemrograman, diperlukan sebuah struktur yang memiliki
susunan berikut ini:

Variabel data digunakan untuk menyimpan nilai angka node tersebut, sedangkan kiri dan kanan, bertipe
pointer, masing-masing mewakili vektor yang akan menunjuk ke node anak kiri dan kanan.
MATERI IX

SORTING

Penjelasan

Sorting adalah sebuah konsep yang mengurutkan elemen-elemen array yang acak mulai dari yang
terkecil ke terbesar atau sebaliknya. Sorting dari yang terkecil ke terbesar disebut Ascending, sedangkan
dari yang terbesar ke terkecil disebut Descending. Kedua jenis sorting ini dapat anda gunakan sesuai
dengan kebutuhannya. Terdapat banyak metode sorting tetapi saya akan jelaskan dua saja untuk artikel ini.

Pemaparan

Metode Sorting

1. Bubble Sort

Bubble Sort merupakan suatu metode sorting dengan proses membandingkan elemen sekarang dengan elemen
selanjutnya. Perbandingan dapat dimulai dari awal sampai akhir atau sebaliknya. Jika elemen sekarang lebih besar
dari yang berikutnya atau jika elemen sekarang lebih kecil dari yang berikutnya (tergantung syarat yang digunakan)
maka posisi akan ditukar. Proses tersebut akan berlangsung berulang kali sampai nilai elemennya berurutan.
2. Selection Sort

 Selection Sort ialah suatu metode sorting yang membandingkan elemen array mulai dari elemen awal sampai
elemen yang terakhir. Saat proses dimulai elemen array akan dicek untuk mencari elemen mana yang paling kecil
atau paling besar. Ketika elemen tersebut sudah ditemukan, posisi elemen tersebut akan dipindahkan ke paling awal.
Setelah itu proses akan diulang lagi dengan mencari elemen terkecil atau terbesar lainnya dan diurutkan posisinya
hingga terbentuk suatu urutan yang sesuai dengan syarat yang ditentukan.
MATERI X
GRAPH

Penjelasan

Graf termasuk struktur non linier. Graf adalah kumpulan titik yang tidak dihubungkan maupun
dihubungkan dengan garis. Seberapa besar titik itu digambarkan ataupun seberapa panjang garis yang
menghubungkan titik-titik itu tidak dipermasalahkan.

Titik dalam graf disebut simpul, vertex, node, atau point, dan kumpulan titik disebut dengan vertices
(nodes atau points). Garis yang menghubungkan vertex disebut dengan edge dan kumpulan garis yang ada
di graf disebut dengan edges.

 Himpunan V (Vertex) yang elemennya disebut simpul (atau point atau node atau titik)

 Himpunan E (Edge) yang merupakan pasangan tak urut dari simpul, anggotanya disebut ruas
(rusuk atau sisi)

Pemaparan

Macam Macam Graph


1. Graf tak Berarah dan Graf Berarah
2. Graf Berbobot (Weighted Graph)
3. Graf Sederhana (Simple Graph ) dan Graf Tak Sederhana (Complex Graph)
4. Sub Graf
5. Full Connected Graf ( Graf Terhubung Penuh)
6. Representasi Graf
Dalam pemrograman, agar data yang ada dalam graf dapat diolah, maka graf harus dinyatakan dalam
suatu struktur data yang dapat mewakili graf tersebut. Dalam hal ini graf perlu dipresentasikan
kedalam bentuk array dua dimensi yang sering juga disebut matrix, atau direpresentasikan dalam
bentuk linked-list. Bentuk mana yang dipilih, biasanya tergantung kepada efisiensi dan kemudahan
dalam membuat program. Berikut ini beberapa bentuk representasi graph :
a) Representasi graf dalam bentuk matrix:
1. Adjacency Matrix

2. Inverse Adjacency Matrix (hanya untuk Graf berarah)

3. Incidence Matrix

4. Vector Matrix

b) Representasi graf dalam bentuk Linked List:

1. Adjacency List

2. Inverse Adjacency List (Hanya untuk Graf Berarah)


MATERI XI

HASHING

Penjelasan

Hash adalah sebuah metode untuk mengatasi kerugian korespondensi satu-satu, dan mengurangi
banyaknya ruang alamat yang digunakan untuk pemetaan dari key yang memiliki cakupan yang
luas ke nilai alamat ynag memiliki cakupan yang dipersempit.

Macam-macam Fungsi Hash

1. Fungsi Modulo
2. Fungsi Pemotongan
3. Fungsi Pelipatan
4. Fungsi Pengkuadratan
5. Fungsi Penambahan Kode ASCII

Collision (Tabrakan)

• Dengan menggunakan hashing, maka hubungan korespondensi satu-satu antara record


key dengan alamat record akan hilang

• Selalu ada kemungkinan dimana terdapat dua buah record dengan key yang berbeda
namun memiliki home address yang sama = tabrakan

Pemaparan

METODE HASING

• Dalam implementasi fungsi hash sering digunakan untuk mengkonversikan himpunan


kunci rekaman menjadi himpunan alamat memori (subskrip dalam array)

• Aspek yang perlu dipertimbangkan dalam pemilihan fungsi hash adalah :

a. Fungsi hash harus mudah dan cepat dihitung

b. Fungsi hash sebisa mungkin mendistribusikan posisi yang dimaksud

Anda mungkin juga menyukai