STRUKTUR DATA - PRAKTIKUM 3
Tugas Praktikum 3 Struktur Data Stack

Nama : Yoga Ilham Rakasiwi
NIM : 16.MI.0010
Manajemen Informatika 2017/2018
Yo kembali lagi di halaman web saya. Kali ini saya akan menjelaskan tentang STRUKTUR DATA STACK. Berikut penjelasnnya.
1. STACK
Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut. Sebuah stack hanya dapat ditambahkan dan dikurangi elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.
gambar ilustrasi stack
• Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang masih kosong.
• Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
• Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
• Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila puncak stack berada pada posisi -1.
• Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast
• Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan method removeLast.
2. QUEUE
Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO(First In First Out), yaitu data yang pertama masuk akan keluar terlebih dahulu dan data yang terakhir masuk akan keluar terakhir.
gambar ilustrasi queue
Fungsi dalam Queue:
• Fungsi init : digunakan untuk membuat queue baru atau kosong, yaitu dengan memberi nilai awal (head) dan nilai akhir (tail) dengan -1.
• Fungsi full: digunakan untuk mengetahui apakah queue sudah penuh atau belum. Dilakukan dengan memeriksa nilai akhir (tail) apakah sudah sama dengan maksimal queue.
• Fungsi empty: digunakan untuk mengetahui apakah queue masih kosong atau tidak. Dilakukan dengan memeriksa nilai akhir (tail) bernilai -1 atau tidak.
• Fungsi enqueue : digunakan untuk menambahkan elemen ke dalam queue.
• Fungsi dequeue : digunakan untuk mengambil elemen dari queue, dengan cara memindahkan semua elemen satu langkah ke posisi depannya sehingga elemen yang paling depan tertimpa.
• Fungsi clear : digunakan untuk menghapus semua elemen dalam queue. Ada dua cara yang bisa digunakan, yaitu menuliskan fungsi seperti inisialisasi atau memanggil fungsi remove sampai queue kosong.
package strukturdatajobsheet3;
import java.util.Iterator;
import java.util.Stack;
public class stackexample2
{
public static void main(String[] args)
{
Stack<String> sk=new Stack<String>();
sk.push("a");
sk.push("c");
sk.push("e");
sk.push("d");
Iterator it=sk.iterator();
System.out.println("Size before pop() :" +sk.size());
while(it.hasNext())
{
String iValue=(String)it.next();
System.out.println("Iterator value :"+iValue);
}
String value = (String)sk.pop();
System.out.println("value :"+value);
System.out.println("Size After pop() :"+sk.size());
}
}
Berikut contoh program 5 :
public class TestStackArr {
public static void main(String[] args)
{
StackArr<String> sa = new StackArr<String>(10);
sa.push("Pink");
sa.push("Purple");
sa.push("Red");
System.out.println("Push Stack : "+sa.toString());
System.out.println("Size Stack : "+sa.size());
sa.pop();
System.out.println("Pop Stack : "+sa.toString());
System.out.println("Peek Stack : "+sa.peek());
System.out.println("Size Stack : "+sa.size());
}
}
package strukturdatajobsheet3;
import java.util.Scanner;
class Palindrom
{
public static void main(String args[])
{
String kata, dibalik = "";
Scanner in = new Scanner(System.in);
System.out.println("masukkan kalimat : ");
kata = in.nextLine();
for(int i=kata.length()-1; i >= 0; i--)
dibalik = dibalik + kata.charAt(i);
System.out.println("hasil : "+dibalik);
String original, reverse = "";
original = in.nextLine();
int length = original.length();
for(int i=length-1; i >=0; i--)
reverse = reverse + original.charAt(i);
if(original.equals(reverse))
System.out.println("Bukan Palindrom");
else
System.out.println("Palindrom");
{
System.out.println("masukkan kalimat : ");
kata = in.nextLine();
System.out.println("hasil : "+kata);
for(int i = length-1; i >= 0; i--)
reverse = reverse + original.charAt(i);
if(original.equals(reverse))
System.out.println("Palindrom");
else
System.out.println("Bukan Palindrom");
}
}
}
Menggunakan NetBeans :
• Fungsi init : digunakan untuk membuat queue baru atau kosong, yaitu dengan memberi nilai awal (head) dan nilai akhir (tail) dengan -1.
• Fungsi full: digunakan untuk mengetahui apakah queue sudah penuh atau belum. Dilakukan dengan memeriksa nilai akhir (tail) apakah sudah sama dengan maksimal queue.
• Fungsi empty: digunakan untuk mengetahui apakah queue masih kosong atau tidak. Dilakukan dengan memeriksa nilai akhir (tail) bernilai -1 atau tidak.
• Fungsi enqueue : digunakan untuk menambahkan elemen ke dalam queue.
• Fungsi dequeue : digunakan untuk mengambil elemen dari queue, dengan cara memindahkan semua elemen satu langkah ke posisi depannya sehingga elemen yang paling depan tertimpa.
• Fungsi clear : digunakan untuk menghapus semua elemen dalam queue. Ada dua cara yang bisa digunakan, yaitu menuliskan fungsi seperti inisialisasi atau memanggil fungsi remove sampai queue kosong.
Berikut contoh program 1 :
package strukturdatajobsheet3;
import java.util.Stack;
public class stackexample {
public static void main(String args[])
{
Stack s = new Stack();
s.push("Java");
s.push("Source");
s.push("and");
System.out.println("Next: "+s.peek());
s.push("Support");
System.out.println(s.pop());
s.push(".");
int count = s.search("Java");
while(count !=-1 && count > 1)
{
s.pop();
count--;
}
System.out.println(s.pop());
System.out.println(s.empty());
}
}
Menggunakan NetBeans :
Run :
Berikut contoh program 2 :
import java.util.Iterator;
import java.util.Stack;
public class stackexample2
{
public static void main(String[] args)
{
Stack<String> sk=new Stack<String>();
sk.push("a");
sk.push("c");
sk.push("e");
sk.push("d");
Iterator it=sk.iterator();
System.out.println("Size before pop() :" +sk.size());
while(it.hasNext())
{
String iValue=(String)it.next();
System.out.println("Iterator value :"+iValue);
}
String value = (String)sk.pop();
System.out.println("value :"+value);
System.out.println("Size After pop() :"+sk.size());
}
}
Run :
Berikut contoh program 3 :
package strukturdatajobsheet3;
public class example3 {
public interface Stack<T>
{
abstract boolean isEmpty();
abstract T peek();
abstract T pop();
abstract void push(T item);
abstract int size();
}
}
Menggunakan NetBeans :
Untuk contoh yang ketiga ini tidak bisa di run ya. Karena ngga ada method mainnya. Nah jika di paksakan run akan mucul seperti ini.
Berikut contoh program 4 :
package strukturdatajobsheet3;
import java.util.EmptyStackException;
import strukturdatajobsheet3.example3.Stack;
public class StackArr<T> implements Stack<T>
{
T value[];
int topOfStack;
public stackarr(int size)
{
value = (T[]) new Object[size];
}
@Override
public boolean isEmpty()
{
return topOfStack == 0;
}
@Override
public T pop()
{
if(isEmpty())
{
throw new EmptyStackException();
}
topOfStack--;
return value[topOfStack];
}
@Override
public void push(T item)
{
value[topOfStack] = item;
topOfStack++;
}
@Override
public T peek()
{
if(isEmpty())
{
throw new EmptyStackException();
}
topOfStack--;
T temp = value[topOfStack];
topOfStack++;
return temp;
}
@Override
public int size()
{
return topOfStack;
}
@Override
public String toString()
{
String str = "";
for(int i=0; i<topOfStack; i++)
{
str += value[i] +" ";
}
return str;
}
}
Berikut contoh program 5 :
public static void main(String[] args)
{
StackArr<String> sa = new StackArr<String>(10);
sa.push("Pink");
sa.push("Purple");
sa.push("Red");
System.out.println("Push Stack : "+sa.toString());
System.out.println("Size Stack : "+sa.size());
sa.pop();
System.out.println("Pop Stack : "+sa.toString());
System.out.println("Peek Stack : "+sa.peek());
System.out.println("Size Stack : "+sa.size());
}
}
Berikut contoh program 6 :
import java.util.Scanner;
class Palindrom
{
public static void main(String args[])
{
String kata, dibalik = "";
Scanner in = new Scanner(System.in);
System.out.println("masukkan kalimat : ");
kata = in.nextLine();
for(int i=kata.length()-1; i >= 0; i--)
dibalik = dibalik + kata.charAt(i);
System.out.println("hasil : "+dibalik);
String original, reverse = "";
original = in.nextLine();
int length = original.length();
for(int i=length-1; i >=0; i--)
reverse = reverse + original.charAt(i);
if(original.equals(reverse))
System.out.println("Bukan Palindrom");
else
System.out.println("Palindrom");
{
System.out.println("masukkan kalimat : ");
kata = in.nextLine();
System.out.println("hasil : "+kata);
for(int i = length-1; i >= 0; i--)
reverse = reverse + original.charAt(i);
if(original.equals(reverse))
System.out.println("Palindrom");
else
System.out.println("Bukan Palindrom");
}
}
}
Menggunakan NetBeans :











Komentar
Posting Komentar