Selasa, 02 Juli 2019


STACK 
Stack (Tumpukan)
 
•Suatu susunan koleksi data dimana data dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengat top of stack

•Stack bersifat LIFO (Last In First Out)
Operasi Stack
     Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : untuk mengambil item pada stack pada tumpukan paling atas
Clear : untuk mengosongkan stack
Is Empty : untuk mengecek apakah stack sudah kosong
isFull : untuk mengecek apakah stack sudah penuh

 Stack with Array of Struct

•Definisikan stack dengan menggunakan satu struct

•Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack

•Elemen struct stack adalah array data dan top untuk menandakan posisi data teratas

•Buatlah variabel tumpuk sebagai implementasi dari struct stack

•Deklarasikan operasi-operasi/function diatas dan buat implementasinya
 

 
 Program Stack
•Contoh deklarasi MAX_STACK

 #define MAX_STACK 10

•Contoh deklarasi STACK dengan struct dan array data

   typedef struct STACK {

    int top;

    int data[10]; };

•Deklarasi/buat variabel dan struct

  STACK tumpuk;
Program Stack (2)

 
•Pada mulanya isi top dengan -1, karena aaray dalam bahasa C dimulai dari 0, yang berarti bahwa data stack adalah kosong

•Top adalah suatu variabel penanda dalam stack yang menunjukan elemen teratas data stack sekarang. Top of stack akan selalu bergerak hingga MAX of STACK yang menyebabkan stack penuh


Program Stack (2)

Ilustrasi stack 

Program Stack (3)
Fungsi IsFull

•Untuk memeriksa apakah stack sudah penuh

•Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum maka belum full
Program Stack (4)
Ilustrasi stack pada kondisi full

Program Stack (5)
Fungsi IsEmpty

•Untuk memeriksa apakah stack masih kosong

•Dengan cara memeriksa top of stack, jika masih -1 maka berarti data stack masih kosong

Program Stack (6)
•Untuk memasukan elemen ke data stack. Data yang diinputkan selalu menjadi elemen teratas stack

•Jika data belum penuh, tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan dalam array data stack. Isikan data baru ke stack berdasarkan indeks top of stack yang telah di-increment sebelumnya

•Jika tidak, output “penuh
 Program Stack (7)
Program Stack (8)
 Fungsi Pop
•Untuk mengambil data stack yang terletak paling aas

•Tampilkan terlebih dahulu nilai elemen teratas dengan mengakses indeksnya sesuai dengan top of stacknya, baru dilakukan di-decrement nilai top of stacknya sehingga jumlah elemen stack berkurang

Program Stack (9) 
 
Program Stack (10)
 
 
Fungsi Print

•Untuk menampilkan semua elemen-elemen data stack

•Dengan cara me-loop semua nilai array secara terbalik, karena kita harus mengakses dadeks array tertinggi dahulu baru ke indeks yang lebih kecil

 Program Stack (11)
Fungsi peek

•Digunakan untuk melihat top of stack

  int peek (){

    return tumpuk.data{tumpuk.top};

  }
 program stack

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package stackqueue;
import java.util.LinkedList;
import java.util.Queue;

/**
 *
 * @author ACER
 */
public class StackQueue {
    Queue<Integer> q = new LinkedList<Integer>();
     
    // Push operation
    void push(int val) 
    {
        // get previous size of queue
        int size = q.size();
         
        // Add current element
        q.add(val);
         
        // Pop (or Dequeue) all previous
        // elements and put them after current
        // element
        for (int i = 0; i < size; i++) 
        {
            // this will add front element into
            // rear of queue
            int x = q.remove();
            q.add(x);
        }
    }
     
    // Removes the top element
    int pop() 
    {
        if (q.isEmpty()) 
        {
            System.out.println("No elements");
            return -1;
        }
        int x = q.remove();
        return x;
    }
     
    // Returns top of stack
    int top() 
    {
        if (q.isEmpty())
            return -1;
        return q.peek();
    }
     
    // Returns true if Stack is empty else false
    boolean isEmpty() 
    {
        return q.isEmpty();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        StackQueue s = new StackQueue();
        s.push(10);
        s.push(20);
        System.out.println("Top element :" + s.top());
        s.pop();
        s.push(30);
        s.pop();
        System.out.println("Top element :" + s.top());
        // TODO code application logic here
    }
   
}
 

https://youtu.be/pj3sgA8YVF0
https://github.com/fanihusna109/STACK-FANI
https://www.istn.ac.id/ 

Tidak ada komentar:

Posting Komentar