Stack
Upcoming SlideShare
Loading in...5
×
 

Stack

on

  • 939 views

 

Statistics

Views

Total Views
939
Views on SlideShare
939
Embed Views
0

Actions

Likes
0
Downloads
41
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Stack Stack Presentation Transcript

  • Made  Henny  Aryani, ST
  • Kumpulan data dimana penambahan danpenghapusan data hanya dapat dilakukandiposisi akhir (TOP) (TOP).Data yang terakhir masuk ke dalam stackmaka akan menjadi data pertama yangkeluar.Sifat stack ini dikenal denganLast In – First Out (LIFO)
  • OPERASI KETERANGANPush Menambahkan item pada tumpukan p p teratasPop Mengambil item pada tumpukan teratasClear Mengosongkan stackIsEmpty Mengecek apakah stack kosongIsFull Mengecek apakah stack penuh View slide
  • Implementasi stack dalam pemrogramandapat dilakukan dengan 2 cara : 1. Dengan Array : jumlah elemen stack dibatasi tergantung batas atas array 2. Dengan singgle linked list : jumlah elemen stack tidak dibatasi View slide
  • Definisikan Stack dengan suatu struct. fDefinisikan konstanta MAX_STACK untukmenyimpan maksimum ini stack. k kElemen struct Stack adalah array dataPosisi teratas adalah TOP d l h
  • Contoh deklarasi MAX_STACKC t h d kl i MAX STACK#define MAX_STACK 10Contoh deklarasi STACK dengan struct dan array datastruct STACK{ int top; int data[MAX_STACK];};Deklarasi/buat variabel dari structSTACK S;
  • struct STACK { int top; int data[MAX_STACK]; ; };top data[10] Index ke - 9 .. .. .. .. .. .. .. .. .. .. .. Index ke - 0
  • 1Pada mulanya isi top dengan -1 (karena array dalam bahasa C dimulai dari 0) yang berarti bahwa data stack adalah KOSONG!b h d k d l hTop Of Stack akan selalu bergerak hingga mencapai MAX of STACK yang menyebabkan  f b bkstack PENUH! void inisialisasi () { S top = -1; } S.top 1;
  • void i i i li id inisialisasi () i { S.top = -1; } top data[10] Index ke - 9 .. .. -1 .. .. .. .. .. ..(stack kosong) .. .. .. Index ke - 0
  • Untuk memeriksa apakah stack sudah penuhDengan cara memeriksa top of stack: jika posisinya sama dengan MAX_STACK‐1 maka  stack dalam posisi full Jika lebih kecil dari MAX_STACK‐1 maka stack  belum full int IsFull() { if (S.top == MAX_STACK-1) { return 1;} e u ;} else { return 0;} }
  • int IsFull() { if (S.top == MAX_STACK-1) { return 1;} else { return 0;} } top data[10] } Index ke - 9 .. .. 9 .. .. .. .. .. ..(stack FULL) .. .. .. Index ke - 0
  • Untuk memeriksa apakah data Stack masih kosongDengan cara memeriksa top of stack, jika  k f k kmasih -1 berarti data Stack masih kosong int IsEmpty() { if (S.top == -1) return 1; else return 0; }
  • int IsEmpty() IsEmpt () { if (S.top == -1) return 1; top data[10] else Index ke - 9 return 0; .. .. } -1 .. .. .. .. .. ..(stack kosong) .. .. .. Index ke - 0
  • Untuk memasukkan elemen ke data Stack.Unt k memas kkan StackData yang diinputkan selalu menjadi elementeratas Stack (yang ditunjuk oleh Top)Proses penambahan dil k k dP b h dilakukan dengan pengecekan kstack terlebih dahulu : Jika data belum penuh maka : p ▪ Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan ke dalam array data Stack. ▪ Isikan data baru ke stack berdasarkan indeks top ofp stack yang telah di‐increment sebelumnya. Jika stack penuh maka informasikan kepada user.
  • void Push (char d) oid P sh { S.top++; S.data[S.top] = d; top data[10] } Index ke - 9 .. .. .. .. ..-1 + 1 = 0 .. .. .. .. d .. .. Index ke - 0
  • Untuk mengambil data Stack yang terletak paling atas (TOP).Hapus data teratas stack dengan mengakses  d kd kindeksnya sesuai dengan top of stackLakukan di‐decrement nilai top sehingga  k k d d l hjumlah elemen stack berkurang
  • void Pop () oid { S.data[S.top] = NULL; S.top--; top data[10] } Index ke - 9 .. .. .. .. ..0 - 1 = -1 .. .. .. .. d .. .. d NULL Index ke - 0
  • Untuk mengosongkan semua elemen‐elemenU t k k l ldata StackDengan menggunakan perulangan untukmengosongkan semua nilai array secaraterbalik ( d t di k data diakses d i i d k array dari indekstertinggi terlebih dahulu baru ke indeks yanglebih kecil )
  • void Clear() { for (int i=S.top;i>-1;i--) {S.data[i] = NULL;} }top data[10] Index ke - 9 .. .. .. .. .. Mengosongkan data .. .. dari atas ke bawah .. .. .. .. Index ke - 0
  • Untuk menampilkan semua elemen‐elemenU t k ilk l ldata StackDengan menggunakan perulangan untukmenampilkan semua nilai array secaraterbalik ( d t di k data diakses d i i d k array dari indekstertinggi terlebih dahulu baru ke indeks yanglebih kecil )
  • void Print () { for (int i=S.top;i>-1;i--) {cout<<S.data[i]<< " “;} }top data[10] Index ke - 9 .. .. .. .. .. Print dari atas ke bawah .. .. .. .. .. .. Index ke - 0