Anda di halaman 1dari 17

Jumat,07.00-09.

00

PRAKTIKUM STRUKTUR DATA


LAPORAN RESMI
MODUL 4- Stack

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

: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.

nextNode=Node baru,input=objek scanner,a=banyak data,i=variabel pembanding.


Inisialisasi head=null
Inisialisasi tail=null
Membuat scanner baru dari objek input.
Inisialisasi nextNode=null
Selesai

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 1. Diagram uml class Stack

Gambar 2. Flowchart class Stack

Gambar 3. Flowchart fungsi PUSH

Gambar 4. Flowchart fungsi PUSH


Flowchart fungsi POP

Gambar 5.

Gambar 6. Flowchart fungsi POP

Gambar 7. Flowchart fungsi view

Gambar 7. Flowchart 7. Flowchart fungsi view


main

Gambar 8. Flowchart

Gambar 9. Flowchart main

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.");
}
}
}
}

Gambar 10. SourceCode Java.

HASIL PRAKTIKUM

Gambar 11. Console Java

ANALISA MASALAH

Permasalahan yang dihadapi praktikan saat membuat sistem informasi


dengan menggunakan stack kali ini adalah output an yang tidak sesuai dengan
prinsip stack yaitu LIFO. Pada program praktikan data yang terakhir masuk menjadi
urutan paling bawah dimana seharusnya ia menjadi top.

KESIMPULAN

Dari praktikum kali ini,dapat disumpulkan bahwa Stack adalah sebuah


abstract data type (ADT) yang berisi koleksi data item yang hanya dapat diakses
pada akhir bagian stack tersebut, biasa disebut top. Hal ini berarti bahwa didalam
sebuah stack, kita dapat memasukkan (insert) dan menghapus (delete) item hanya
dari posisi top tersebut. Item terakhir yang kita masukkan kedalam sebuah stack
adalah item yang paling pertama harus kita keluarkan. Itulah mengapa stack disebut
sebagai Last-In-First-Out (LIFO) data structure.