STRUKTUR DATA
MODUL VII
Nama : Demy
Octiana Azmianti
NIM :
125610118
Jurusan : Sistem
Informasi
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013
Pembahasan Listing :
1. class simpul
{ public
String
elemen;
simpulkiri;
simpulkanan;
public
voidngisiElemen(String
ELEMEN)
{
elemen = ELEMEN;
}
}
Merupakan
kelas dengan nama simpul, di dalam kelas ini terdapat tipe data string dengan
nama elemen, simpul kanan dan simpul kiri. Terdapat pula sebuah method dengan
nama ngisiElemen yang dikerjakan dengan tipe data string dengan nama
variabelnya ELEMEN dan method ini bersifat public sehingga dapat diakses oleh
semua method yang ada di program ini.
2. class pohon
{ public
simpulakar;
public
voiddeklarasiPohon()
{ akar
= null;
}
Merupakan
kelas dengan nama pohon, didalam kelas tersebut hanya terdiri simpul akar dan
memiliki method dengan nama deklarasi Pohon, yang bersifat public yang berarti
bisa diakses oleh semua method yang ada di dalam program ini dan menyatakan
pula bahwa akar sama dengan null.
3. simpultambahSimpul(simpulPenunjuk, String
ELEMEN)
{ if
(Penunjuk == null)
{ simpulbaru = new simpul();
baru.ngisiElemen(ELEMEN);
baru.kiri = null;
baru.kanan = null;
Penunjuk = baru;
return(Penunjuk);
}
Merupakan
method dengan nama tambah simpul dengan variabel Penunjuk dan ELEMEN.
Menggunakan pernyataan if yaitu jika penunjuk sama dengan null, berarti node
dalam keadaan kosong. Sehingga obyek baru diciptakan, yaitu dengan nama baru.
Maka simpul baru akan masuk ke dalam pohon dengan perintah atau method
ngisiElemen, sehingga simpul baru masuk maka simpul tersebut akan menjadi
ELEMEN atau simpul dalam pohon., dan terdapat satu simpul/node, dan simpul
elemen tersebut pada sisi kiri dari simpul tersebut bernilai null dan pada sisi
kanannya pula akan bernilai null dan simpul tersebut akan menjadi penunjuk
dalam pohon.
4. else
{ if (ELEMEN.compareTo(Penunjuk.elemen) <
0 )
{ Penunjuk.kiri = tambahSimpul(Penunjuk.kiri,
ELEMEN);
return(Penunjuk);
}
Selain
itu jika penunjuk tidak sama dengan null maka dihadapkan pula dalam sebuah
kondisi. Jika ELEMEN dibandingkan dengan penunjuk elemen dan hasilnya lebih
kecil dari 0 maka akan dikerjakan perintah selanjutnya yaitu penunjuk ke kiri
sama dengan melakukan tambah simpul dan simpul penunjuk akan ke kiri dari
ELEMEN. Dan akan dilakukan nilai pengembalian penunjuk tersebut seperti semula.
Jika elemen atau simpul yang akan masuk dalam pohon dibandingkan dengan
penunjuk simpul lebih kecil maka akan berada pada posisi kiri dari penunjuk
tersebut dan akan dikembalikan lagi nilai penunjuk seperti semula.
5. else
{ Penunjuk.kanan=
tambahSimpul(Penunjuk.kanan, ELEMEN);
return(Penunjuk);
}}}
Penunjuk
ke kanan sama dengan melakukan tambah simpul petunjuk ke kanan untuk menjadikan
elemen atau simpul dalam pohon, maka setelah perintah tersebut telah dilakukan,
akan dikerjakan nilai pengembalian penunjuk seperti semula.
6. void preOrder(simpulPenunjuk)
{ if(Penunjuk != null)
{ System.out.print(Penunjuk.elemen +
",");
preOrder(Penunjuk.kiri);
preOrder(Penunjuk.kanan);
}}
Method
dengan PreOrder yang merupakan simpul penunjuk. Jika simpul penunjuk tidak sama
dengan null, maka elemen pun dicetak. Kemudian preOrder(Penunjuk.kiri)dimulai
dari kiri, yang menyatakan bahwa simpul penunjuk akan ke kiri hingga penunjuk
bernilai null, maka tidak akan dikerjakan. Kemudian akan berpindah ke
preorder(Penunjuk.kanan)untuk dikerjakan.
7. void inOrder(simpulPenunjuk)
{ if(Penunjuk != null)
{ inOrder(Penunjuk.kiri);
System.out.print(Penunjuk.elemen +
",");
inOrder(Penunjuk.kanan);
}}
Method
in order dengan menggunakan simpul penunjuk sebagai penelusuran dalam pohon. Di
dalam method ini terdapat sebuah kondisi jika penunjuk tidak sama dengan null,
maka akan dikerjakan perintah inOrder(Penunjuk.kiri), berarti node dibaca dari
kiri. Dan kemudian elemen akan dicetak , dan setelah dicetak, maka akan
dikerjakan selanjutnya adalah membaca node pohon ke kanan dengan perintah
inOrder(Penunjuk.kanan).
8. void postOrder(simpulPenunjuk)
{ if(Penunjuk !=null)
{ postOrder(Penunjuk.kiri);
postOrder(Penunjuk.kanan);
System.out.print(Penunjuk.elemen +
",");
}}}
Method
postOrder dengan menggunakan simpul penunjuk juga sebagai penelusuran dalam
pohon. postOrder(Penunjuk.kiri) membaca node pohon yang dimulai dari kiri,
kemudian akan dikerjakan parintah postOrder(Penunjuk.kanan) yang mana simpul
penunjuk akan dibaca dari kanan, setelah itu dilakukan kunjungan pada node
dalam pohon dari kiri maka selanjutnya pada program ini akan dilakukan ke
kanan. Setelah itu perintah System.out.print(Penunjuk.elemen +
",")untuk mencetak elemen.
9. class ProgramPohonBiner
{
public static void main(String[] args)
{ pohonPohonBiner = new pohon();
Merupakan
class utama dari program Pohon Biner ini. Dengan menciptakan objek pohon yang
baru dan akan dihasilkan output.
10. PohonBiner.deklarasiPohon();
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "M");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "P");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "D");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "A");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "S");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "K");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "N");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "G");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "O");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "L");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "W");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "F");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "J");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "T");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "H");
PohonBiner.akar =PohonBiner.tambahSimpul
(PohonBiner.akar, "U");
PohonBiner.preOrder(PohonBiner.akar);
PohonBiner.inOrder(PohonBiner.akar);
PohonBiner.postOrder(PohonBiner.akar);
}
}
Terdapat
16 simpul yang akan dimasukkan ke dalam pohon, dengan simpul pertama akan
menjadi root dalam pohon. Dari data atau simpul diatas dapat diketahui bahwa
yang menjadi root adalah M. kemudian semua simpul akan di kerjakan dengan
perintah tambah simpul dan dilihat letak posisinya yang akan dibandingkan
dengan penunjuk simpul. Dari simpul tersebut akan ada 16 akar yang akan masuk
dalam pohon biner
TUGAS
class simpul{
public String elemen;
simpul kiri;
simpul kanan;
public void ngisiElemen(String
ELEMEN){
elemen=ELEMEN;
}
}
class pohon{
public simpul akar;
public void deklarasiPohon(){
akar=null;
}
simpul tambahSimpul (simpul
Penunjuk, String ELEMEN){
if (Penunjuk==null){
simpul baru=new
simpul();
baru.ngisiElemen(ELEMEN);
baru.kiri=null;
baru.kanan=null;
Penunjuk=baru;
return (Penunjuk);
}
else{
if
(ELEMEN.compareTo(Penunjuk.elemen)<0){
Penunjuk.kiri=tambahSimpul(Penunjuk.kiri, ELEMEN);
return (Penunjuk);
}
else{
Penunjuk.kanan=tambahSimpul(Penunjuk.kanan, ELEMEN);
return (Penunjuk);
}
}
}
void preOrder (simpul Penunjuk){
if (Penunjuk!=null){
System.out.print(Penunjuk.elemen+", ");
preOrder(Penunjuk.kiri);
preOrder(Penunjuk.kanan);
}
}
void inOrder (simpul Penunjuk){
if (Penunjuk!=null){
preOrder(Penunjuk.kiri);
System.out.print(Penunjuk.elemen+", ");
preOrder(Penunjuk.kanan);
}
}
void postOrder (simpul Penunjuk){
if (Penunjuk!=null){
preOrder(Penunjuk.kiri);
preOrder(Penunjuk.kanan);
System.out.print(Penunjuk.elemen+", ");
}
}
}
public class ProgramPohonBiner {
public static void
main(String[] args) {
pohon PohonBiner = new
pohon();
PohonBiner.deklarasiPohon();
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "D");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "E");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "M");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "Y");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "O");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "C");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "T");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar,
"I");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "A");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar,
"N");
PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "A");
PohonBiner.preOrder(PohonBiner.akar);
System.out.println("perOrder");
PohonBiner.inOrder(PohonBiner.akar);
System.out.println("inOrder");
PohonBiner.postOrder(PohonBiner.akar);
System.out.println("postOrder");
}
}
LAPORAN PRAKTIKUM
STRUKTUR
DATA
MODUL VIII
Nama : Demy Octiana Azmianti
NIM : 125610118
Jurusan : Sistem Informasi
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013
Pembahasan
Listing 1 :
1.
import java.util.*;: untuk
mengimport class-class yang ada pada java util
2.
public class Example {
private List list;
public List getList(){
return list;} : Example
merupakan nama class dari program ini dan memiliki tingkat akses private yang
berarti data dan method dapat diakses oleh class yang memilikinya saja. Dan
dengan menggunakan variabel list dari tipe data List. Public List getList()
merupakan konstruktor yang dapat diakses semua bagian atau method dalam program
ini dengan perintah getList makan nilai List akan dikembalikan.
3.
Example(){
list= new ArrayList();
list.add(new
String("Hello world!"));
list.add(new
String("Good bye!"));} : merupakan bagian dari program example
dengan menciptakan list dengan variable ArrayList, yang terdiri dari list yang
ditambah dengan tipe data String dengan variabel atau isi dari tipe data
tersebut adalah “Hello world”, kemudian ditambah lagi datanya dengan tipe data
String pula yang menyatakan pernyataan “Good bye!”
4.
public void printList(){
for (Object s:list) {
System.out.println(s);}} : sebuah method atau konstruktor
dengan nama printList dan pada method ini dapat diakses oleh semua method lain
yang terdapat dalam program ini. Method ini akan membaca dari class Example
dengan perulangan yang menyatakan objek s adalah list atau daftar yang ditambah
dari class example tersebut. Dengan menggunakan perintah Sytem.out.println(s)
menampilkan hasil dari perulangan for tersebut.
5.
public static void main(String args[]) {
Example e = new Example
();
e.printList();
Collections.sort(e.getList());
e.printList();}} :method bersifat public yang bisa
diakses oleh semua method yang ada pada program juga merupakan perintah method
dengan memulai program dengan method main. Dalam method tersebut, diciptakannya
objek dari class example dan akan dibawa ke dalam method printList untuk di
eksekusi atau ditampilkan pada outputnya.
Pembahasan
Listing 2 :
1.
import java.awt.Graphics;: berfungsi untuk menampilkan grafiks dalam program java
2.
import java.util.LinkedList;:
berfungsi untuk mengatur data dalam bentuk LinkedList yang ada pada program ini
3.
import javax.swing.JFrame; : berfungsi untuk menampilkan dan
mengatur bentuk form atau Jframe dalam program tersebut
4. public class
PercobaanLinked extends JFrame {
public static
void main(String args[]) {
new PercobaanLinked();} : class
dengan nama PercobaanLinkedList dengan memulai program dengan method yang void
mainnya. new PercobaanLinkedList merupakan awal dari class program ini.
5. LinkedList l1 =
new LinkedList();
PercobaanLinked() {
l1.add("Test LinkedList");
l1.add("Coba Lagi");
l1.add(10243);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(500,500);
this.setVisible(true);
setTitle("Test LinkedList");}: akan dilakukan penciptaan objek dari
kelas LinkedList yaitu dengan nama l1dari kelas PercobaanLinkedList akan
melakukan penambahan objek yang dilakukan dari penciptaan objek tersebut.
Seperti melakukan penambahan data pada objek l1yang memiliki pernyataan “Test
LinkedList”, kemudian dilakukan lagi penambahan data dari penciptaan objek baru
l1 dengan pernyataan “Coba Lagi” dan dilakukan lagi penambahan data dari
penciptaan objek baru l1 dengan pernyataan “10243”. Terdapat kunci this yang
berarti menunjuk pada konstruktor atau method yang dituju dalam program ini,
yaitu this menyatakan mengatur operasi tutup dari form dekstopnya, yaitu berupa
exit_on_close, untuk keluar form tersebut. Sehingga untuk membuat form tersebut
dibutuhkan ukuran, maka terdapat kata kunci yang menunjuk pada perintah setSize
untuk mengatur ukuran form dengan ukuran 500 x 500. Kemudian untuk mengatur
tampilan hasil form nya dibutuhkan perintah setvisible yang bernilai true, dan
setTitle merupakan pengaturan untuk judul pada form yang dibuat. Dan pada
program ini membuat form dengan judul “Test LinkedList”.
6. public void
paint(Graphics g) {
g.drawString("Jumlah
Elemen : "+String.valueOf(l1.size()), 10, 50); : method
dengan nama paint dengan menggunakan bentuk graphics bernama g dan akan
menampilkan kata di antara petik dua yaitu Jumlah Elemen dan disertai dengan
isi dari tipe data string yang akan mengambil data dari data l1 dan memiliki
nilai atau value yang memiliki ukuran 10 x 50. Sehingga dari perintah tersebut
dapat diketahui bahwa di dalam LinkedList l1 terdapat 3 elemen.
7. g.drawString("Elemen
ke-1: "+l1.get(0), 10, 100);
g.drawString("Elemen ke-2:
"+l1.get(1), 10, 150);
g.drawString("Elemen
ke-3: "+l1.get(2), 10, 200); : menambahkan perintah yang sama namun dengan
elemen yang berurutan berbeda
8. g.drawString("Method
getFirst(): "+l1.getFirst(), 10, 250);
g.drawString("Method
getLast(): "+l1.getLast(), 10, 300); : menampilkan isi dari g yang dibawa
drawString yang kemudian akan menampilkan kata diantara petik dua, yaitu Method
getFirst yang akan disertai dengan data l1 dengan ukuran 10 x 250 maka dari
data yang ada pada l1, untuk data l1 yang ditambah pertama adalah “Test
LinkedList” maka akan ditampilkan hasil tersebut. Kemudian akan mengambil data
l1 dengan perintah getLast menggunakan ukuran 10 x 300 dari data l1 yang masuk
dalam LinkedList, yang masuk terakhir adalah 10243 maka data tersebut akan
ditampilkan saat dilakukan pemanggilan dengan getLast.
9. l1.addLast("Terakhir");
g.drawString("Method
getLast(): "+l1.getLast(), 10, 350);: melakukan penambahan objek lagi
terhadap l1 LinkedList dengan menggunakan perintah addLast yang berarti data
yang akan masuk dalam LinkedList dengan nama l1, akan dilakukan penambahan dari
belakang atau terakhir. Dari data sebelumnya yang berada dalam posisi terakhir
adalah 10243, maka pada saat dilakukan l1.addLast dengan nama “Terakhir”, maka
variabel data dengan nama terakhir akan menggantikan posisi 10243 sebagai
method terakhir dalam LinkedList l1 ini.
10.
l1.remove();: suatu
perintah untuk menghapus data dalam LinkedList l1 maka aka nada satu data yang
dipilih untuk dihapus.
11.
g.drawString("Jumlah
Elemen Sekarang: "+String.valueOf(l1.size()), 10, 400);}} : melakukan pengecekan jumlah elemen
sekarang dan mengetahui jumlah elemen yang ada dalam LinkedListl1, yaitu
terdapat 3 elemen terakhir, jumlah elemen yang ada dalam l1 adalah 4 elemen,
saat dilakukan pemanggilan perintah remove maka akan ada satu elemen yang
keluar atau terhapus dari l1, sehingga 4-1 = 3 elemen sekarang dalam l1.