Anda di halaman 1dari 19

Jumat,07.00-09.

00

PRAKTIKUM STRUKTUR DATA


LAPORAN RESMI
MODUL 3- LINKED LIST

SESI/MEJA : B/9
NAMA PRAKTIKAN:
Masti Fatchiyah Maharani

( 1434010077)

ASISTEN PRAKTIKUM:
Try Khurniawati

(1334010038)

Unggul Widi Atmojo

(1334010028)

LABORATORIUM ALGORITMA DAN PEMOGRAMAN KOMPUTER


PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL "VETERAN" JATIM
2015

LEMBAR PENGESAHAN

LAPORAN INI TELAH DITERIMA DAN DISETUJI


PRAKTIKUM

: Struktur Data

MODUL

:3

JUDUL

: Linkedlist

SESI

:B

MEJA

:9

Surabaya,

November 2015
Mengetahui,

Asisten Praktikum

Try Khurniawati
Unggul Widi Atmojo

SOAL
1. Buatlah Sistem informasi menggunakan linked list dengan menu

Input

View

Delete

Exit

ALGORITMA
Class Node:
1. Mulai
2. Deklarasi variabel:nama ,npm,fakultas,dan jurusan sebagai type data string
nm=nama,npm,fk=fakultas,progdi=jurusan,nextNode=Node.
3. Selesai

Class Linkedlist

1. Mulai
2. Deklarasi variabel:,input=objek dari Scanner.
3. Membuat objek input dari scaneer baru.
4. Inisialisasi node head=null
5. Inisialisasi node tail=null
6. Jika boolean kosong,maka nilai boolean akan mengembalikan nilai head=null
7. Fungsi addlast
8. Fungsi removefirst
9. Fungsi cetak
10. Selesai

Fungsi addLast

1. Mulai

2. Deklarasi variabel: nm=nama,npm,fk=fakultas,progdi=jurusan,k=variabel


penghubung antara data dengan node.
3. Membuat node dengan variabel k dari node baru dengan parameter
nm,fk,npm,progdi
4. Jika data masih kosong maka lanjut ke langkah 5 jika tidak maka lanjut ke langkah 6.
5. Inisialisasi: head=k
tail=k
6.

Panggil nextNode dari tail

7.

Inisialisasi nextNode=k

8.

Inisialisasi tail=k

9.

Selesai

Fungsi removefirst

1.

Mulai

2.

Deklarasi variabel:current=kondisi sebelumnya

3.

Inisialisasi Node current=head

4.

Jika data tidak kosong maka lanjut ke langkah5,jika iya lanjut ke langkah 12

5.

Jika head=tail benar maka lanjut ke langkah 6,jika tidka lanjut ke langkah 8

6.

Inisialisasi head=tail=null

7.

Cetak delete success

8.

Inisialisasi current=panggil nextNode dengan current.

9.

Inisialisasi head=current

10.

Inisialisasi current=null

11.

Cetak delete success

12.

Cetak data is empty

13.

Selesai.

Fungsi Cetak

1.

Mulai

2.

Deklarasi variabel: i= banyak data,i sebagai type data integer,k=variabel

penghubung data dengan node.


3.

Inisialisasi i=0

4.

Memanggil node dengan variabel k.

5.

Inisialisasi k=head

6.

Tampilkan |NO|NAMA|NPM|JURUSAN|FAKULTAS

7.

Jika data tidak sama dengan null benar maka lanjut ke langkah 8 jika tidak

lanjut ke langkah 16
8.

Jika k tidak sama dengan 0 bernilai benar maka lanjut ke langkah 9,jika tidak

maka lanjut ke langkah16


9.

Hitung nomor dengan rumus= i=i+1

10.

Tampilkan nomor

11.

Tampilkan nama

12.

Tampilkan npm

13.

Tampilkan jurusan

14.

Tampilkan fakultas

15.

Proses: i=i+1,kembali ke langkah 7

16.

Tampilkan data belum diisi

17.

Selesai

Main

1.

Mulai

2.

Deklarasi variabel:nama=nam,npm,fk=fakultas,progdi=jurusan, nm,npm,fk,dan

progdi sebagai tipe data string,a=objek class Linkedlist,menu,input=objek Scanner.


3.

Membuat objek input dari Scanner baru

4.

Membuat objek a dari Linkedlist baru

5.

Inisialisasi menu=0

6.

Tampilkan pilihan menu: 1.input 2.view 3.exit

7.

Jika menu sama dengan 1 maka lanjut ke langkah 8,jika tidak maka lanjut ke

langkah 14
8.

Masukkan nama

9.

Masukkan npm

10. Masukkan fakultas


11.

Masukkan jurusan

12. Panggil fungsi addLast dengan parameter nm,npm,fk,progdi dengan objek a


13. Jika menu sama dengan 2 maka lanjut kelangkah 14 jika tidak maka lanjut ke
langkah 15

14.

Panggil fungsi cetak dengan objek a

15.

Jika menu sama dengan 3 maka lanjut ke langkah 16 jika tidak maka lanjut ke

langkah 17
16.

Panggil fungsi removefirst dengan objek a

17.

Jika menu sama dengan 4 benar maka lanjut ke lagkah 17 jika tidka lanjut ke

langkah 18
18.

Terimakasih

19.

maaf,Menu tidak tersedia

20.

Selesai

DIAGRAM UML

Gambar 1. Diagram uml class Node

Gambar 2. Diagram uml class Linkedlist

FLOWCHART

Gambar 3.Flowchart Class Node

Gambar 4. Flowchart class Linkedlist

Gambar 5. Flowchart fungsi addLast

Gambar 6. Flowchart fungsi cetak

Gambar 7. Flowchart fungsi delete

Gambar 8.Flowchart Main

Gambar 8. Flowchart main

SOURCECODE

package praktikum;
import java.util.Scanner;
class Node {
String Nama;
String NPM;
String Fakultas;
String Jurusan;
Node nextNode;
public Node(String nm,String npm,String fk,String progdi){
Nama=nm;
NPM=npm;
Fakultas=fk;
Jurusan=progdi;
}
}
class Linkedlist{
Scanner input=new Scanner(System.in);
Node head=null;
Node tail=null;
boolean isEmpty(){
return (head==null);
}
void addLast(String nm, String npm, String fk, String progdi){
Node k=new Node(nm, npm, fk,progdi);
if(isEmpty()){
head=k;
tail=k;
}
else{
tail.nextNode=k;
tail=k;
}
}
void removeFirst(){
Node current=head;
if(!isEmpty()){
if(head==tail){
head=tail=null;
System.out.println("Delete Success!");
}
else{
current=current.nextNode;
head=current;
current=null;
System.out.println("Delete Success!");
}
}else System.out.println("Data is Empty!");
}
void cetak(){
int i=0;
Node k;
k=head;
System.out.println("No.| NPM | Nama | Jurusan | Fakultas");
if(!isEmpty()){
while(k!=null){
System.out.println((i+1)+". | "+k.Nama+" | "+k.NPM+" |

if(!isEmpty()){
while(k!=null){
System.out.println((i+1)+". | "+k.Nama+" | "+k.NPM+" |
"+k.Fakultas+" | "+k.Jurusan);
k=k.nextNode;
i++;
}
}else System.out.println("Data is Empty!");
}
public static void main(String[]args) {
Scanner input=new Scanner(System.in);
String nm,npm,fk,progdi;
Linkedlist a=new Linkedlist();
int menu;
menu=0;
System.out.println("Pilihan menu: 1.Input 2.View 3.Delete 4.Exit");
while (menu!=6){
System.out.print("Masukkan menu:");
menu=input.nextInt();
if (menu==1){
System.out.print("Masukkan nama:");
nm=input.next();
System.out.print("Masukkan NPM:");
npm=input.next();
System.out.print("Masukkan Fakultas:");
fk=input.next();
System.out.print("Masukkan Jurusan:");
progdi=input.next();
a.addLast(nm, npm, fk, progdi);
}
else if(menu==2){
a.cetak();
}
else if(menu==3){
a.removeFirst();
}else if (menu==4){
System.out.print("\nterimakasih");
}else {
System.out.print("\nMaaf,menu tidak tersedia");
}

Gambar 9. SourceCode Java.

HASIL PRAKTIKUM

Gambar 10. Console Java

ANALISA MASALAH
Permasalahan yang dihadapi praktikan saat membuat sistem informasi
dengan menggunakan linkedlist kali ini adalah saat mnentukan menu delete. Data
yang sudah di delete tidak dapat langsung terhapuskan,melainkan menyisakan data
yang belum terhapus sehingga harus berulang kali memilih menu delete agar semua
data terhapuskan.

KESIMPULAN
Dari praktikum kali ini,dapat disumpulkan bahwa Array adalah sekumpulan
data yang memiliki tipe data yanng sama,variabel yang sama dan tiap data
dibedakan dengan indeks dalam array tersebut.indeks dari tiap array dimulai dengan
indeks ke 0. Jadi jika suatu array memiliki berisi 5 data maka indeks maksimal dari
array 4. Manfaat dari array adalah untuk mengurangi jumlah variabel yang
digunakan.Array

dapat

kebutuhan pengguna.

berbentuk

satu,dua,tiga

dan

seterusnya

tergantung