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