Disusun Oleh :
Dhea Putri Miradikna (4611417071)
Epafraditus Memoriano (4611417070)
SEMARANG
2018
KATA PENGANTAR
Kami mengucapkan terima kasih kepada semua pihak yang telah membantu
sehingga modul ini dapat diselesaikan tepat pada waktunya. Modul ini masih
jauh dari sempurna, oleh karena itu, kritik dan saran yang bersifat membangun
sangat kami harapkan demi sempurnanya modul ini.
Semoga modul ini memberikan informasi bagi mahasiswa Ilmu Komputer dan
bermanfaat untuk pengembangan wawasan dan peningkatan ilmu pengetahuan
bagi kita semua.
PENULIS
ii
DAFTAR ISI
iii
2.6 Double Linked List, Circullar Double Linked List ............................................... 17
2.6.1 Teori Double Linked List ..................................................................... 17
2.6.2 Operasi pada Double Linked List........................................................ 17
2.6.3 Teori Circullar Double Linked List ...................................................... 20
2.6.4 Operasi pada Circullar Double Linked List ......................................... 20
2.7 Stack .................................................................................................................. 22
2.7.1 Pengertian Stack ................................................................................ 22
2.7.2 Jenis Stack .......................................................................................... 22
2.7.3 Stack dengan Array ............................................................................ 23
2.8 Stack dengan Linked List ................................................................................... 25
2.9 Queue ................................................................................................................ 26
2.9.1 Pengertian .......................................................................................... 26
2.9.2 Fungsi ................................................................................................. 26
2.10 Queue dengan Double Linked List .................................................................. 26
2.11 Bubble Sort dan Selection Sort ....................................................................... 27
2.11.1 Bubble atau Exchange Sort .............................................................. 27
2.11.2 Selection Sort ................................................................................... 28
2.12 Quick Sort ........................................................................................................ 30
2.13 Tree ................................................................................................................. 31
2.13.1 Pengertian ........................................................................................ 31
2.13.2 Istilah – Itilah .................................................................................... 31
2.14 Binary Search Tree dan AVL Tree .................................................................... 33
2.14.1 Binary Search Tree ........................................................................... 33
2.14.2 AVL Tree ........................................................................................... 34
BAB III PENUTUP
3.1 Kesimpulan ........................................................................................................ 36
DAFTAR PUSTAKA....................................................................................................... 37
iv
BAB I
PENDAHULUAN
1
BAB II
PEMBAHASAN
Algoritma dapat disajikan dengan dua teknik yaitu teknik tulisan dan teknik gambar.
a. Teknik tulisan biasanya menggunakan metode structure english atau bahasa
natural dan pseudocode
b. Teknik gambar biasanya menggunakan diagram (flow chart).
Syarat Algoritma
a. Finite, algoritma harus berakhir (terminate) setelah sejumlah langkah.
b. Definite, setiap langkah algoritma harus didefinisikan dengan tepat dan tidak
menimbulkan makna ganda (ambiguous).
c. Input, setiap algoritma memerlukan data sebagai masukan untuk diolah.
d. Output, setiap algoritma memberikan satu atau beberapa hasil keluaran.
e. Effective,langkah-langkah algoritma dikerjakan dalam waktu yang wajar.
Ciri Algoritma yang Baik
a. Algoritma memiliki logika atau metode yang tepat dalam menyelesaikan
masalah.
b. Menghasilkan output yang tepat dan benar dalam waktu yang singkat.
c. Algortima ditulis dengan format yang mudah dipahami dan mudah
diimplementasikan ke dalam bahasa pemrograman
d. Tidak menimbulkan arti ganda (ambiguous).
e. Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami
algoritma tersebut.
f. Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan
diberbagai platform komputer.
2
Struktur Algoritma
1. Struktur Sekuensial (Runtunan)
Pada struktur sekuensial instruksi dikerjakan secara berurutan baris perbaris
mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau
perulangan
3
2.1.2 Hubungan Algoritma dan Struktur Data
Pengertian
a. Cara menyimpan atau merepresentasikan data di dalam komputer agar dapat
hubungan dipakai secara efesien.
b. Cara tertentu untuk mengatur dan menyimpan data di computer sehingga
bisa diakses dan dimodifikasi secara efisien.
c. Pengaturan atau data di dalam suatu system
d. Kumpulan nilai data, hubungan antar mereka, dan fungsi atau operasi yang
bisa diterapkan pada data
4
i. Numerik, terdiri dari :
a. Numerik integer (bilangan bulat)
b. Numerik real (bilangan riil)
ii. Karakter, terdiri dari :
a. Alfabet : a .. z, A .. Z
b. Angka : 0 .. 9
c. Simbol khusus : + ? ‘ ! [ ] { } … dll
iii. Boolean (logika), terdiri dari :
a. True
b. False
5
2.2.3 Definisi Fungsi
Fungsi sama seperti halnya dengan prosedur, namun tetap ada perbedaannya yaitu
fungsi mempunyai output dengan tipe variabel yang kita tentukan. Berbeda dengan
procedure yang bisa tidak menggunakan parameter, fungsi harus menggunakan
parameter dalam penggunaannya.
Contoh Fungsi
a) Pada contoh tersebut, kita membuat sebuah parameter bernama sisi.
Kemudian fungsi akan mengembalikan nilai dengan tipe int (integer) dari
variabel luas.
b) Pengembalian nilai pada fungsi menggunakan kata kunci return
6
2.3 VARIABLE, KONSTANTA, PARAMETER REKURSIF
Tipe Data
Berikut ini macam-macam tipe data pada Java:
char: Tipe data karakter, contoh Z
int: angka atau bilangan bulat, contoh 29
float: bilangan desimal, contoh 2.1
double: bilangan desimal juga, tapi lebih besar kapasistanya, contoh 2.1
String: kumpulan dari karakter yang membentuk teks, contoh Hello
World!
boolean: tipe data yang hanya bernilai true dan false
Format Variabel
i. Format penulisan variabel pada java
<tipe data> namaVariabel;
ii. Contoh variabel dan tipe data
int sisiPersegi = 9;
7
Contoh
public class VariableLokal {
//Membuat sebuah method yang bernama game
//didalam class VariableLokal
public void game(){
String GameFavorit = “Minecraft ";
int seri = 12;
System.out.println(GameFavorit + seri);
}
Pegertian Konstanta
Konstanta adalah adalah sebuah variabel yang nilainya tetap dan tidak bisa
dirubah lagi. Konstanta digunakan untuk menyimpan data yang tidak akan
kita ubah
Dalam bahasa Java, pendeklarasian konstanta dituliskan dengan keyword
(final) didepan tipe variabel. Sekali konstanta diberi nilai, maka nilai tersebut
tidak dapat diubah.
2.3.5 Rekursif
Pengertian
Rekrusif adalah sebuah method di dalamnya memanggil method dirinya
sendiri, melakukan proses berulang-ulang. Program ini akan berhenti jika
syaratnya sudah di penuhi
final int Int =10;
final char dataChar = ‘\u103’; final float x = 12.67; final byte y = 2;
8
Contoh
public class Main {
public static void main(String[] args) {
cetakAngka(1);
}
static void cetakAngka(int angka) {
if (angka <= 10) {
System.out.print(angka + " ");
cetakAngka(++angka);
}
}
}
9
2.4 VARIABLE POINTER
Contoh
package pertemuan1;
public class Array {
public static void main(String[] args){
String[] teman = {"Daffa", "Hilmi", "Yayan", "Ghifari",
"Zakki", "Bima"};
for(int i=0; i<teman.length; i++){
System.out.println("Nama ke-"+i+" :
"+teman[i]);
}
}
}
10
Array Multi Dimensi
a. Array multi dimensi artinya array yang memiliki lebih dari satu dimensi. Atau
kita bisa sebut, array di dalam array.
b. Jumlah dimensinya tidak terbatas, tergantung kita mampunya sampai
berapa
b. Kerugian
i. Batas Ukuran : kita dapat menyimpan hanya ukuran tetap elemen
dalam array. Ukuran ini tidak tumbuh ukurannya saat runtime.
11
2.5 SINGLE LINKED LIST, LIFO DAN FIFO
2..5.1 Single Linked List
Pengertian
Sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu,
yang setiap elemennya terdiri dari dua bagian
Struktur berupa rangkaian elemen saling berkait dimana setiap elemen
dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen.
Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen
bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.
Link list adalah desain tempat penyimpanan data yang terdiri dari node-
node (simpul-simpul) yangsaling terhubung.
Link list dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari
gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang.
Gerbong disini setara dengan node dalam link list yang berfungsi untuk
menyimpan data.
12
Type
Point = ^RecPoint;
RecPoint = Record
Isi : TipeData;
Next : Point;
End;
Var
Head, Tail, Now : Point;
Type
Point = ^RecPoint;
RecPoint = Record
Isi : TipeData;
Next : Point;
End;
Var
Head, Tail, Now : Point;
Procedure INSERT(elemen:TipeData);
13
Procedure dan function Linked List lainnya
Selain procedure insert diatas, pada linked list juga masih terdapat p
rocedure
serta function lainnya. Dibawah ini diberikan procedureprocedure serta f
unction umum dalam linked list.
1. Create
Membuat sebuah linked list yang baru dan masih kosong.
Procedure ini wajib dipanggil untuk menggunakan linked list.
Procedure Create;
Begin
Head := Nil;
Tail := Nil;
End;
2. Empty
Function untuk menentukan apakah linked list kosong atau tidak.
3. Find First
Mencari elemen pertama dari linked list
Procedure Find_First;
Begin
Now := Head;
End;
14
4. Find Next
Mencari elemen sesudah elemen yang ditunjuk Now
Procedure Find_Next;
Begin
If Now^.Next <> Nil th
en
Now := Now^.next;
End;
5. Retrieve
Mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu
ditampug pada suatu variabel, dalam potongan procedure ini ditampung
dalam variabel r.
Procedure Retrieve(var r :
TipeData);
Begin
R := Now^.Isi;
End;
6. Update
Mengubah elemen yang ditunjuk oleh now dengan isi dari suatu variabel
(dala contoh ini digunakan variabel u).
7. Delete Now
Menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah
elemenyang pertama dari linked list (head), maka head akan berpindah
ke elemen berikutnya.
Procedure DeleteNow;
Var x : point;
Begin
If Now <> Head then
Begin
X := head;
While x^.next <> now do
X := x^.next;
X^.next := now^.next;
End
Else head := head^.nex
t;
Dispose(now);
Now := head;
End;
15
8. Delete Head
Menghapus elemen yang ditunjuk oleh head. Head akan berpindah ke
elemen sesudahnya.
Procedure DeleteHead;
Begin
If head <> nil then
Begin
Now := Head;
Head := Head^.Next;
Dispose(Now);
Now := Head;
End;
End;
9. Clear
Untuk menghapus linked list yang sudah ada. Wajib dilakukan bila ingin
mengakhiri program yang menggunakan linked list. Jika tidak ada
data-data
yang dialokasikan ke memory pada program sebelumnya akan tetap
tertinggal di dalam memory.
Procedure Clear;
Begin
While head <> nil do
Begin
Now := head;
Head := head^.next;
Dispose(now);
End;
End;
16
2.6 DOUBLE LINKED LIST DAN CIRCULLAR DOUBLE LINKED LIST
2.6.1 Teori Double Linked List
Procedure InsertAfter(e:Elemen_Type);
Var Now : Point;
Begin
New(now);
Now^.Isi := e;
If Head=Nil then
Begin
Head := Now;
Tail := Now;
Now^.Next := Nil;
Now^.Prev := Nil;
End
Else
Begin
Tail^.next := now;
Now^.Prev := Tail;
Tail := Now;
Tail^.Next := Nil;
End;
End;
17
ii. Insert Before
Procedure Insert Before berguna untuk menambahkan simpul
di depan (sebelah kiri).
Procedure InsertBefore(e:Elemen_Type);
2. Delete
i. Delete After
Procedure Delete After berguna untuk menghapus simpul dari
belakang.
Procedure DeleteAfter;
Var Now : Point;
Begin
Now := Tail;
If Now <> Head then
Begin
Tail := Now^.Prev;
Tail^.Next := Nil;
End
Else
Begin
Tail := Nil;
Head := Nil;
End;
If Now <> Nil then
Dispose(now);
End;
18
ii. Delete Before
Procedure Delete Before merupakan kebalikan dari procedure
Delete After yang akan menghapus simpul dari depan (sebelah kiri).
Procedure DeleteBefore;
Var Now : Point;
Begin
Now := Head;
If Now <> Head then
Begin
Head := Now^.Next;
Head^.Prev := Nil;
End
Else
Begin
Tail := Nil;
Head := Nil;
End;
If Now <> Nil then
Dispose(now);
End;
Procedure DeleteAtPos;
Var Bantu1, Bantu2 : Point;
Begin
Bantu1 := Now^.Prev;
Bantu2 := Now^.Next;
19
2.6.3 Teori Cilcullar Double Linked List
Merupakan double linkedmlistmyang simpul terakhirnya menunjuk ke
simpul awaldansimpul awalnya menunjuk ke simpul akhir sehingga mem
bentuk suatu lingkaran.
Link list tidak mempunyai indeks seperti array. Kita hanya bisa memberi
nama node. Akan tetapi, tidak semua node dalam link list mempunyai nama.
Procedure InsertAfter(e:Elemen_Type);
Var Now : Point;
Begin
New(now);
If Head=Nil then
Begin
Head := Now;
else
Now^.Prev := Tail;
Tail^.Next := Now;
End;
Now^.Isi := e;
Tail := Now;
Tail^.next := Head;
Head^.Prev := Tail;
End;
Procedure InsertBefore(e:Elemen_Type);
Begin
If Head=Nil then
Begin
Head := Now;
Tail := Now;
End else
Begin
Now^.Prev :=Head;
Head^.Next := Now;
End;
Now^.Isi := e;
Now^.Next := Tail;
Tail^.Prev := Now;
Tail := Now;
End;
20
2. Delete
i. Delete After
Procedure Delete After bergunauntuk menghapus simpul dari
belakang.
Procedure DeleteAfter;
Var Now : Point;
Begin
Now := Tail;
If Head=Nil then
Begin
Tail := Nil;
Head := Nil;
End else
Begin
Tail := Now^.Prev;
Tail^.Next := Head;
Head^.Prev := Tail;
End;
If Now <> nil then Dispose(Now);
End;
Procedure DeleteBefore;
Var Now : Point;
Begin
Now := Tail;
If Head=Tail then
Begin
Tail := Nil;
Head := Nil;
End else
Begin
Head := Now^.Next;
Head^.Prev := Tail;
Tail^.Next := Head;
End;
If Now <> nil then Dispose(Now);
End;
3. Update
Procedure update berguna untuk mengganti isi suatu simpul dengan data ya
ng lain. Procedure update ini memanfaatkan suatu procedure cari untuk
mencari posisi simpul yang akan diganti isinya tersebut
Procedure Update(x,y : elemen_Type);
Begin
Cari(x);
Now^.isi := y;
End;
21
2.7 STACK
2.7.1 Pengertian
Stack adalah sekumpulan data dimana pengisian atau penambahan data
dan penghapusan atau pengambilan data dilakukan di salah satu
ujung/top.
Jika kamu perhatikan ketika kita menyimpan buku ke dalam kotak dan
pengambilan buku dalam konsep stack ini. Sehingga dapat di sebutkan
bahwa konsep stack tersebut LIFO (Last In First Out) yakni yang terakhir
kali disimpan pada tumpukan adalah yang pertama di ambil karena
berada pada urutan teratas dari tumpukan.
c. peek(), berfungsi untuk melihat data yang berada pada tumpukan paling
atas (akan dikeluarkan).
22
g. isEmpty(), berfungsi untuk menguji apakah stack masih kosong.
a.
b.
23
c.
d.
Kode diatas digunakan mengeluarkan data dari urutan paling akhir dan
melakukan decrement nilai dari variabel top. Nilai data yang dikeluarkan
juga di-return dalam metode pop.
e.
24
f.
g. .
Contoh Program
25
2.9 QUEUE
2.91 Pengertian
Queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan
(insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi
belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan
pada sisi lainnya, yang disebut sisi depan (FRONT), dari list
2.92 Fungsi
Fungsi init : digunakan untuk membuat queue baru atau kosong, yaitu
dengan memberi nilai awal (head) dan nilai akhir (tail) dengan -1.
Fungsi full: digunakan untuk mengetahui apakah queue sudah penuh
atau belum. Dilakukan dengan memeriksa nilai akhir (tail) apakah
sudah sama dengan maksimal queue.
Fungsi empty: digunakan untuk mengetahui apakah queue masih
kosong atau tidak. Dilakukan dengan memeriksa nilai akhir (tail)
bernilai -1 atau tidak.
Fungsi enqueue : digunakan untuk menambahkan elemen ke dalam
queue.
Fungsi dequeue : digunakan untuk mengambil elemen dari queue,
dengan cara memindahkan semua elemen satu langkah ke posisi
depannya sehingga elemen yang paling depan tertimpa.
Fungsi clear : digunakan untuk menghapus semua elemen dalam
queue. Ada dua cara yang bisa digunakan, yaitu menuliskan fungsi
seperti inisialisasi atau memanggil fungsi remove sampai queue kosong
Contoh Program
Class JavaLinkListTest{
public static void main(String[] args) {
LinkedList llist = new
LinkedList();
llist.add("A");
llist.addFirst("B");
llist.addFirst("C");
llist.addFirst("D");
llist.addFirst("E");
llist.addFirst("F");
llist.addFirst("G");
llist.addLast("I");
llist.add(3, "X");
llist.remove(0);
for(Object stackList : llist){ System.out.print(stackList+"-
>");
}
26
2.11 BUBBLE SORT DAN SELECTION SORT
Contoh Program
import java.util.Arrays;
public class BubbleSortAsc {
public static void main(String[] args) {
int[] bilangan = {5, 12, 3, 19, 1, 47};
System.out.println("Bilangan sebelum di sorting
Bubble Sort : "+Arrays.toString(bilangan));
System.out.println("\nProses Bubble Sort secara
Ascending:");
for(int a = 0; a < bilangan.length; a++) {
System.out.println("Iterasi "+(a+1));
for(int b = 0; b < bilangan.length-1; b++) {
if(bilangan[b] > bilangan[b+1]) {
int temp = bilangan[b];
bilangan[b] = bilangan[b+1];
bilangan[b+1] = temp;
}
System.out.println(Arrays.toString(bilangan));
}
System.out.println();
}
27
System.out.println("Hasil akhir setelah di sorting:
"+Arrays.toString(bilangan));
}
}
2.11.2 Selection Sort
Pengertian
Selection Sort merupakan salah satu metode pengurutan yang mencari
nilai yang paling kecil(Jika Ascending) atau nilai yang paling besar(Jika
Descending) di urutan Data berikutnya. Dibanding Bubble Sort, Selection
Sort jelas lebih baik dari segi kecepatan proses pengurutannya.
Contoh Program
public class SelectionSort {
public static void selectionSort (int [] myList){
for (int i = 0; i < myList.length - 1; i++){
int nilaiMinimum = myList[i];
int indexNilaiMinimum = i;
for(int j = i + 1; j < myList.length; j++){
if(nilaiMinimum > myList[j]){
nilaiMinimum = myList[j];
indexNilaiMinimum = j;
}
}
if(indexNilaiMinimum != i){
myList[indexNilaiMinimum] = myList [i];
myList[i] = nilaiMinimum;
}
}
}
28
public static void main(String args []){
int myArray [] = {22, 34, 18, 10, 42, 56, 68, 29,
77, 56};
SelectionSort.selectionSort(myArray);
for (int i = 0; i < myArray.length; i++){
System.out.print(myArray[i] + " ");
}
}
}
29
2.12 QUICK SORT
2.12.1 Pengertian
Quicksort mengurutkan data dengan pendekatan divide-and-conquer,yaitu
membagi masalah semula menjadi beberapa submasalah sejenis yang lebih
kecil dan menyelesaikannya. Quicksort melakukan pengurutan dalam
putaran secara rekrusif. Pengulangan secara rekursi dilakukan jika jumlah
data yang akan diurutkan lebih dari satu buah.
2.12.2 Proses
Devide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan
A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau
sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih
besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai
elemen pivot. Perhitungan pada elemen q merupakan salah satu
bagian dari prosedur pemisahan.
Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif. Pada
algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena
telah terjadi pengurutan elemen – elemen pada sub-array
2.12.3 Fungsi
// pembagian
do{
while (a[i]<pivot) i++;
while (a[j]>pivot) j--;
if (i<=j)
{
h=a[i]; a[i]=a[j]; a[j]=h;//tukar
i++; j--;
}
} while (i<=j);
// pengurutan
if (lo<j) quickSort(a, lo, j);
if (i<hi) quickSort(a, i, hi);
}
30
2.13 TREE
2.13.1 Pengertian
Kumpulan elemen yang salah satu elemennya disebut dengan root (akar)
dan sisa elemen yang lain disebut sebagai simpul (node/vertex) yang
terpecah menjadi sejumlah himpunan yang tidak saling berhubungan satu
sama lain, yang disebut subtree/cabang
31
Leaf : node-node dalam tree yang tak memiliki seccessor.
Contoh : node D, H, I, J, K, dan G adalah leaf
Degree : banyaknya child yang dimiliki suatu node
Contoh : node E memiliki in degree 1 dan out degree 2
32
2.14 BINARY SEARCH TREE DAN AVL TREE
Kelebihan
Mudah dalam penyusunan algoritma sorting
Searching data relatif cepat
Fleksibel dalam penambahan dan penghapusan data
Operasi – Operasi
Create : Membentuk binary tree baru yang masih kosong.
Clear : Mengosongkan binary tree yang sudah ada.
Empty : Function untuk memeriksa apakah binary tree masih
kosong.
Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan
insert: sebagai root, left child, atau right child. Khusus insert
sebagai root, tree harus dalam keadaan kosong.
Find : Mencari root, parent, left child, atau right child dari suatu
node. (Tree tak boleh kosong)
Update : Mengubah isi dari node yang ditunjuk oleh pointer
current. (Tree tidak boleh kosong)
Retrieve : Mengetahui isi dari node yang ditunjuk pointer current.
(Tree tidak boleh kosong)
DeleteSub : Menghapus sebuah subtree (node beserta seluruh
descendantnya) yang ditunjuk current. Tree tak boleh kosong.
Setelah itu pointer current akan berpindah ke parent dari node
yang dihapus.
Characteristic : Mengetahui karakteristik dari suatu tree, yakni :
size, height, serta average lengthnya. Tree tidak boleh kosong.
(Average Length =
[jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
33
Traverse : Mengunjungi seluruh node-node pada tree, masing-
masing sekali. Hasilnya adalah urutan informasi secara linier
yang tersimpan dalam tree. Ada tiga cara traverse : Pre Order, In
Order, dan Post Order.
Ada 4 kasus yang biasanya terjadi saat operasi insert dilakukan, yaitu :
anggap T adalah node yang harus diseimbangkan kembali
1. Kasus 1 : node terdalam terletak pada subtree kiri dari anak kiri T
(left-left)
3. Kasus 3 : node terdalam terletak pada subtree kanan dari anak kiri
T (right-left)
4. Kasus 4 : node terdalam terletak pada subtree kiri dari anak kanan
T (left-right)
34
Contoh – Single Rotation: Jika suatu Tree diinsert node baru
dengan nilai 12, maka akan terjadi ketidak seimbangan dan hal ini
terletak pada posisi root
35
BAB III
PENUTUP
3.1 KESIMPULAN
Modul ini merupakan suatu alat atau sarana pembelajaran yang di dalamnya berupa
materi yang di buat secara sistematis dan terstruktur sebagai upaya untuk mencapai
tujuan kompetensi yang diharapkan.
Modul ini dirancang secara khusus dan jelas berdasarkan kecepatan pemahaman masing-
masing mahasiswa, sehingga mendorong mahasiswa untuk belajar sesuai dengan
kemampuannya.
36
DAFTAR PUSTAKA
https://selviafk.wordpress.com/2017/09/12/materi-algoritma-dan-
struktur-data/
https://gist.github.com/evanjam/67d8da9bfb0079daaa578f33705f2f
5f
https://www.scribd.com/doc/185573330/Pertemuan-3-Variabel-
Konstanta-Parameter-Rekursif
https://drive.google.com/file/d/0B7e504vYI8_qR2t1OTN5aFlKdDQ/vi
ew
http://elib.unikom.ac.id/files/disk1/468/jbptunikompp-gdl-fitridiani-
23353-5-pertemua-5.pdf
https://www.okedroid.com/2017/11/belajar-mengenal-linkedlist-
pada-program-java.html
https://courses.cs.washington.edu/courses/cse373/13wi/lectures/01-
25/LinkedStack.java
https://codereview.stackexchange.com/questions/62710/stack-
implementation-using-a-linked-list
http://ankurm.com/implementation-of-stack-using-linked-list-in-
java/
https://medium.com/easyread/memahami-konsep-stack-secara-
sederhana-bd4409ec560c
https://furqonubd.wordpress.com/2013/05/20/stack-and-queue/
http://onestringlab.com/quicksort-pada-java/
https://www.scribd.com/document/341497037/Materi-Tree-Java-
Struktur-Data
http://jagocoding.com/tutorial/246/Tutorial_Tree_Binary_Search_Tr
ee
https://socs.binus.ac.id/2016/12/20/insertion-avl-tree/
37