00
SESI/MEJA : B/9
NAMA PRAKTIKAN:
Masti Fatchiyah Maharani
( 1434010077)
ASISTEN PRAKTIKUM:
Try Khurniawati
(1334010038)
(1334010028)
LEMBAR PENGESAHAN
LAPORAN INI TELAH DITERIMA DAN DISETUJI
PRAKTIKUM
: Struktur Data
MODUL
:4
JUDUL
: Stack
SESI
:B
MEJA
:9
Surabaya,
November 2015
Mengetahui,
Asisten Praktikum
Try Khurniawati
Unggul Widi Atmojo
SOAL
1. Buatlah program Stack(dengan menggunakan array/linkedlist) dengan menu
Push
Pop
View
Exit
ALGORITMA
Class Stack:
1. Mulai
2. Deklarasi variabel: nama,npm,dan jurusan sebagai type data String
3.
4.
5.
6.
7.
Fungsi push
1. Mulai
2. Deklarasi variabel: data=objek dari Node, input=objek dari scanner.
3. Inisialisasi i=0
4. Jika i<a bernilai benar maka lanjut ke langkah 5,jika tidak maka lanjut ke langkah
5.
6.
7.
8.
9.
15
Membuat node baru dari objek data.
Masukkan nama
Masukkan npm
Masukkan jurusan
Jika head=null bernilai benar maka lanjut ke langkah 10,jika tidak maka lanjut ke
langkah 12
10. Inisialisasi head=data
11. Inisialisasi tail=data
12. Panggil nextNode dengan objek data
13. Inisialisasi nextNode=head
14. Inisialisasi head=data
15. Proses:i=i+1,kembali ke langkah 4
16. Selesai
Fungsi pop
1. Mulai
2. Deklarasi variabel: current=keadaan sebelumnya
3. Insialisasi Node current=head
4. Jika head=null bernilai benar maka lanjut ke langkah 5,jika tidak lanjut ke langkah6
5. Cetak data kosong.
6. Jika head=tail bernilai benar maka lanjut ke langkah 7 jika tidak lanjut ke langkah8
7. Inisialisasi head=tail=null
8. Inisialisasi current= panggil nextNode dengan head
9. Inisialisasi head=current
10. Insialisasi current=null
11. Cetak berhasil di pop
12. Selesai.
Fungsi view
1. Mulai
2. Deklarasi variabel: current=kondisi sebelumnya,i=variabel pembanding
3. Inisialisasi i=1
4. Inisialisasi node current=head
5. Jika head=null bernilai benar maka lanjut ke langkah 6,jika tidak lanjut ke langkah7
6. Cetak data kosong
7. Cetak no,nama,npm,jurusan.
8. Jika current tidak sama dengan null bernilai benar maka lanjut ke langkah 9,jika
tidak lanjut ke langkah 12
9. Cetak data.
10. Proses= i=i+1,kembali ke langkah 8
11. Inisialisasi current=panggil nextNode dengan current.
12. Selesai
Main:
1. Mulai
2. Deklarasi variabel:a=banyak data,input=objek scanner,k=objek stack,menu.
3. Insialisasi menu=1
4. Membuat stack baru dengan objek input.
5. Jika menu tidak sama dengan 4 bernilai benar maka lanjut ke langkah 6 jika tidak
maka lanjut ke langkah16
6. Cetak pilih menu
7. Jika menu=1 benar maka lanjut ke langkah 8 ,jika tidak maka lanjut ke langkah10
8. Cetak masukkan banyak data
9. Panggil fungsi push dengan objek k
10. Jika menu=2 bernilai benar maka lanjut ke langkah 11,jika tidak maka lanjut ke
11.
12.
13.
14.
langkah 12
Panggil fungsi pop dengan objek k
Jika menu=3 bernilai benar maka lanjut ke langkah 13 jika tidak maka 14
Panggil fungsi view dengan objek k
Jike menu=4 bernilai benar maka lanjut ke langkah,jika tidak maka lanjut ke
langkah
15. Cetak terimakasih
16. Cetak maaf,menu tidak tersedia
17. selesai
FLOWCHART
Gambar 5.
Gambar 8. Flowchart
SOURCECODE
package praktikum;
import java.util.*;
public class Stack{
Node head=null, tail=null;
Scanner input=new Scanner(System.in);
private static class Node{
public String nama,npm,jurusan;
public Node nextNode=null;
}
void push(int a){
for (int i=0; i<a; i++){
Node data=new Node();
System.out.print("Masukkan nama: ");
data.nama=input.next();
System.out.print("Masukkan npm: ");
data.npm=input.next();
System.out.print("Masukkan jurusan: ");
data.jurusan=input.next();
if (head==null){
head=data;
tail=data;
}
else{
data.nextNode=head;
head=data;
}
}
}
void pop(){
Node current=head;
if(head==null){
System.out.println("Data kosong");
}else if(head==tail){
head=tail=null;
}else{
current=head.nextNode;
head=current;
current=null;
}
System.out.println("Berhasil di pop");
}
void viewnode(){
int i=1;
Node current=head;
if(current==null){
System.out.println("Data kosong");
}else{
System.out.println("NO\tNPM\tNAMA\tJurusan");
while (current != null) {
System.out.println(i+"\t"+current.npm+"\t"+current.nama+"\t"+current.jurusan);
i++;
current = current.nextNode;
}
}
}
public static void main(String args[]){
int a, menu=1;
Stack k=new Stack();
Scanner scan=new Scanner(System.in);
while(menu!=4){
System.out.print("1. Push\n2. Pop\n3. View\n4. Exit\nPilih menu: ");
menu=scan.nextInt();
if (menu==1){
System.out.print("Masukkan jumlah data: ");
a=scan.nextInt();
k.push(a);
}else if(menu==2){
k.pop();
}else if(menu==3){
k.viewnode();
}else if (menu==4){
System.out.print("terimakasih.");
}else{
System.out.print("Maaf menu tidak tersedia.");
}
}
}
}
HASIL PRAKTIKUM
ANALISA MASALAH
KESIMPULAN