Pendahuluan Modul 1 Linked List

1. Jelaskan makna keyword-keyword java berikut dan berikan contohnya!
a. New
b. Private
c. Public
d. This
e. Static
f. Class

2. Apa yang salah dari program di bawah ini?
Public class Main
{
public int value;
main()
{
this.value = 5;
}
private void cetak()
{
System.out.println(“Hello world!”)
value=10;
}
public static void main (String args[])
{
int value;
Main main;
cetak();
System.out.println(value);
System.out.println(Main.value);
}
}

Output : Hello World
5
10

3. Jelaskan fungsi dari class-class berikut beserta contoh implementasinya!
a. Scanner
b. FileReader
c. BufferedReader
d. FileWriter
e. BufferedWriter

4. Jelaskan perbedaan Linked List dengan Array dan sertai gambar permodelannya! Sebutkan keuntungan dan kerugiannya masing-masing struktur data tersebut!

5. Berikan contoh kasus kapan sebuah Linked List baik digunakan dan kapan sebuah Array lebih baik digunakan serta alasannya!

6. Jelaskan dan pahami definisi Node, single Linked List, Double Linked List, Single Circular Linked List, dan Double Circular Linked List beserta gambar permodelannya

7. Jelaskan operasi dasar yang dimiliki oleh Linked List berikut: (Data bertipe int dan dianggap unik setiap menambah node key yang digunakan adalah nilai integer dari data itu sendiri)
a. Node find (key)
b. void addFirst (data)
c. void addlast (data)
d. Node removeFirst ()
e. Node removeLast()
f. Node remove (key)
g. Boolean insertAfter (key,data)
h. Boolean insertBefore (key,data)
dan sertai gambar permodelannya untuk setiap fungsi tersebut!

8. Jelaskan alur cerita dari algoritma Joshepus Problem (fungsi dari apa sajakah yang dimiliki dan buatlah lustrasi penyeleseian beserta gambar permodelannya)!

JAWABAN SOAL PENDAHULUAN
MODUL 01


1.a. New digunakan untuk membuat sebuah instance dari kelas
contoh:
String sName = new String();
Float fVal = new Float(0.15);

b. keyword Private adalah pengubah kontrol akses yang dapat diterapkan dalam kelas, metode atau field (satu variabel dinyatakan dalam satu kelas)
contoh:

private void cetak()
{
System.out.println(“Hello world!”)
value=10;
}


c. Public adalah tipe data yang dapat diakses secara langsung dari semua class
contoh:
public int rollDice()
{
int die1 = 1 + ( int ) ( Math.random() * 6 );
int die2 = 1 + ( int ) ( Math.random() * 6 );

int sum = die1 + die2; // sum die values

// display results in textfields
die1Field.setText( Integer.toString( die1 ) );
die2Field.setText( Integer.toString( die2 ) );
sumField.setText( Integer.toString( sum ) );

return sum; // return sum of dice
}


d.this merupakan suatu tanda yang menunjukkan properti yang digunakan dalam class tersebut dan dioperasikan dengan tanda dot (.)
contoh:
public class MyClass
{
int number;
public MyClass(int number)
{
this.number = number;
}
}


e.Static Method static hanya boleh memanggil method static lain secara langsung. Variabel boleh saja dideklarasikan static, tetapi variabel ini akan menjadi variabel global yang dapat di akses oleh sembarang bagian program.
contoh:
public class MyPublicClass
{
public final static int MAX_OBJECTS = 100;
static int _numObjects = 0;
static class MyStaticClass
{
}
static int getNumObjects()
{
}
}


f. Class adalah tempat yang dapat menampung fungsi-fungsi. Class ditampung pada package
contoh:
public class Rectangle
{
float width;
float height;
public Rectangle(float w, float h)
{
width = w;
height = h;
}
public float getWidth()
{
return width;
}
public float getHeight()
{
return height;
}
}

2. Pada fungsi main, terdapat pemanggilan method cetak. Hal ini tidak dapat dilakukan karena fungsi main memakai fitur static. Oleh karena itu, solusi yang pertama, jika kita akan memanggil cetak di fungsi main, maka method cetak juga harus memakai static. Selain solusi tersebut, terdapat solusi lain yakni, kita membuat object di fungsi mainnya, sehingga nantinya jika method cetak dipanggil dengan bantuan objectnya itu bias terjadi.
Selain itu, nama Constructor harus sama dengan nama classnya. Missal: public class NewClass, maka nama constructornya juga NewClass.

package soal2;
public class NewClass
{
public static int value;
NewClass()//constructor
{
this.value = 5;
}

private void cetak()
{
System.out.println("Hello World!");
value = 10;
}

public static void main (String args[])
{
int value = 5;
NewClass main = new NewClass();
main.cetak();
System.out.println(value);
System.out.println(NewClass.value);
}
}


3.a.Scanner : Membaca inputan dari user tanpa mengkonversi inputan ke dalam bentuk-bentuk tertentu.

import java.util.Scanner;

public class UjiScan {
public static void main (String[] args) {
//Deklarasi Scanner:
Scanner in = new Scanner(System.in);

//Untuk Menerima Kata:
System.out.print("Kata: ");
String kata = in.nextLine();
System.out.println("Hello, " + kata);

//Untuk Menerima Integer:
System.out.print("Angka 1: ");
int angka1 = in.nextInt();
System.out.print("Angka 2: ");
int angka2 = in.nextInt();
int hasil = angka1 + angka2;
System.out.println("Hasil Penjumlahan " + angka1 + " dan " + angka2 + " adalah: " + hasil);

//Untuk Menerima Float:
System.out.print("Angka 1: ");
float angkafloat1 = in.nextFloat();
System.out.print("Angka 2: ");
float angkafloat2 = in.nextFloat();
float hasilfloat = angkafloat1 + angkafloat2;
System.out.println("Hasil Penjumlahan " + angkafloat1 + " dan " + angkafloat2 + " adalah: " + hasilfloat);
}
}


b.Filereader : Membaca isi dari file. Constructor yang sering digunakan adalah FileReader(String filePath) dan FileReader(File fileObj).

import. java.io.FileReader;
import java.util.Scanner;
import java.io.IOException;
public class ReadFile {
public static void main (String[] args){
FileReader fr = null;
Scanner reader = null;
Mahasiswa mhs;
try{
fr = new FileReader (“Mhs.txt”);
}
catch(IOException e) {
System.out.printf(“Error ; %s\n”, e.getMessage());
System.exit(1);
}
reader = new Scanner(fr);
while(reader.hasNext()){
String[] s = reader.nextLine().split(“ ”);

Mhs = new Mahasiswa (s[0],s[1], Integer.parseInt(s[2]));
System.out.printf(“%s %s %d\n”, mhs.getNim(),mhs.getNama(),mhs.getNilai()))
}
reader.close();
try{
fr.close();
}
catch(IOException e){
System.out.printf(“Error : %s\n”,e.getMessage());
}
}


c. BufferedReader : Membaca text dari character input streams, character buffer agar dalam membaca character, array dan line menjadi efisien.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class GetInputFromKeyboard
{
public static void main( String[] args ){
BufferedReader dataIn = new BufferedReader(n
InputStreamReader( System.in) );
String name = " ";
System.out.print("Please Enter Your Name:");

try{
name = dataIn.readLine();
}
catch( IOException e ){
System.out.println("Error!");
}
System.out.println("Hello " + name +"!");
}
}


d.Filewriter : Menulis pada sebuah file. Constructor yang sering digunakan adalah FileWriter(String filePath) dan FileWriter(String filePath, boolean append).

import java.io.FileWriter;
import java.util.Formatter;
import java.io.IOException;
public class WriteFile {
public static void main (String[] args){
FileWriter fw = null;
Formatter writer = null;
try {
fw = new FileWriter(“Mhs.txt”);
}
catch(IOException e){
System.out.printf(“Error : %s\n”,e.getMessage());
System.exit(1);
}
writer= new Formatter (fw);
Mahasiswa mhs[] = new Mahasiswa[2];
mhs[0] = new Mahasiswa (“062120001”, “Susan”,100);
mhs[1] = new Mahasiswa (“062120002”,”Rudi”,90);
for(Mahasiswa m : mhs)
{
writer.format(“%s %s %d\n”, m.getNim(),m.getNama(),m.getNilai());
}
writer.close();
try{
fw.close();
}
catch(IOException e) {
System.out.printf(“Error : %s\n”,e.getMessage());
}
}

}

e. BufferedWriter : Menulis text pada character output stream, character buffer agar efisien dalam menuliskan single character, array, dan string.

FileWriter fWriter = new FileWriter ( fileChooser.getSelectedFile ( ) ) ;
BufferedWriter writer = new BufferedWriter ( fWriter ) ;
String text = textArea.getText ( ) ;

writer.write ( text , 0 , text.length ( ) ) ;
writer.close ( ) ;


4.Perbedaan antara Array dan Linked list

Array:
• Diharuskan untuk mendefinisikan besar array
• alokasi memorinya bersifat static
• Penyusuran data dilakukan secara satu persatu karena memiliki index

Linked List:
• Tidak perlu mendefinisikan besar linkedlist
• Alokasi memorinya bersifat dinamis
• Jika ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya

Keuntungan array adalah dalam hal mengakses data. Jika ingin mengakses data ke-n (index n), maka programmer

Kelemahan Array, pada array alokasi memorinya bersifat static sehingga diharuskan untuk mendefinisikan besar array

Keuntungan Linkedlist Alokasi memorinya bersifat dinamis sehingga Tidak perlu mendefinisikan besar linkedlist

Kelemahan Linkedlist Jika ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya

Gambar Permodelan Linkedlist



Gambar Permodelan Array



5. Linked List baik digunakan ketika memerlukan operasi penambahan tau penyisipan. Array lebih baik digunakan jika data yang ada sudah ditentukan jumlahnya.

Contoh Linked List baik digunakan daripada Array:
Pengalokasian memori dengan menggunakan linked list lebih efektif karena sesuai dengan kebutuhan, tidak seperti menggunakan array, jika kita mendeklarasikan array dengan 10 buah elemen tapi kita hanya menggunakan 5 buah elemen, maka memori yang dialokasiakn tetap 10 buah elemen.
Gambar permodelan dengan arrayMaka misal kita hanya memasukkan nilai ke dalam A[0]-A[2] saja
A[0] = 2
A[1] = 3
A[2] = 4
Maka A[4]-A[10] akan berisi 0.
Oleh karena itu, lebih baik menggunakan Linked List, karena sudah sesuai kebutuhan data tersebut.
Lalu, jika kta misalnya ingin menyisipkan data = 5 diantara 2 dan 3, maka dengan Linked List akan terasa mudah.
Contoh Array lebih baik digunakan daripada Linked List:
Array baik digunakan ketika data yang ada sudah ditentukan jumlahnya.

6.a.Node adalah komponen – komponen atau simpul – simpul yang membentuk hubungan seperti rantai dengan bantuan pinter. Node dapat pula diartikan sebagai object – object yang menyusun linkedlist.Setiap node terdiri dari 2 bagian, yaitu bagian data dan bagian penghubung. Bagian data berisi data yang akan diolah, sedangakan bagian penyambung berisi alamat simpul( alamat node ).
gambar permodelan:



b.Single Linked List adalah Jenis linked list yang hanya menggunakan satu jenis pointer ( pointer tunggal ). Jadi dalam satu struktur simpul hanya ada satu elemen atau field atau variable yang bertipe pointer yang isinya adalah alamat atau simpul berikutnya.
gambar permodelan:



c.Double Linked List adalah jenid linked list yang memiliki pointer ke dua arah, yaitu pointer ke node sebelumnya dan ke node sesudahnya. Pointer next dan prev-nya menunjuk ke null. Di dalam struktur simpul ada dua elemen atau field atau variable yang bertipe pointer. Yang pertama berisi alamat sebelumnya, dan yang kedua menunjuk simpul berikutnya.
gambar permodelan:



e. Double Circular Linked List adalah Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.
gambar permodelan:



7.a.Node find (key) : digunakan untuk mencari Node dalam list.
b.Void addFirst (data) : untuk menyisipkan elemen-elemen tertentu di depan list.



c.Void addlast (data) : untuk menyisipkan elemen-elemen tertentu di belakang list.



d.Node removeFirst () : untuk menampilkan elemen-elemen di depan list kemudian menghapusnya.



e.Node removeLast () : untuk menampilkan elemen-elemen di belakang list kemudian menghapusnya.



f.Node remove (key) : digunakan untuk menghapus Node dalam list.



g.Boolean insertAfter (key,data) : digunakan untuk menyisipkan Node ke list setelah key.



h.Boolean insertBefore (key,data) : digunakan untuk menyisipkan Node ke list sebelum key.



8.Josephus Problem
Misalkan ada 5 orang, mereka berhitung orang demi orang dari angka 1. Kemudian ketika perhitungan sampai pada angka ketiga maka orang tersebut keluar dari permainan (dicoret), lalu kemudian penghitungan dimulai dari angka1 lagi mulai dari orang yang selanjutnya. Hingga nantinya didapat hanya satu orang saja yang betahan di permainan ini.







Fungsi dasar:
Insert ();
Node Remove (key);

1 komentar:

Sugrahaku mengatakan...

bisa tolong dijelaskan maksud dari perintahnya apa gan?

Posting Komentar