Stack

1,064 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,064
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
62
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Stack

  1. 1. Made  Henny  Aryani, ST
  2. 2. 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)
  3. 3. OPERASI KETERANGANPush Menambahkan item pada tumpukan p p teratasPop Mengambil item pada tumpukan teratasClear Mengosongkan stackIsEmpty Mengecek apakah stack kosongIsFull Mengecek apakah stack penuh
  4. 4. 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
  5. 5. 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
  6. 6. 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;
  7. 7. struct STACK { int top; int data[MAX_STACK]; ; };top data[10] Index ke - 9 .. .. .. .. .. .. .. .. .. .. .. Index ke - 0
  8. 8. 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;
  9. 9. void i i i li id inisialisasi () i { S.top = -1; } top data[10] Index ke - 9 .. .. -1 .. .. .. .. .. ..(stack kosong) .. .. .. Index ke - 0
  10. 10. 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;} }
  11. 11. 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
  12. 12. 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; }
  13. 13. int IsEmpty() IsEmpt () { if (S.top == -1) return 1; top data[10] else Index ke - 9 return 0; .. .. } -1 .. .. .. .. .. ..(stack kosong) .. .. .. Index ke - 0
  14. 14. 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.
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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 )
  19. 19. 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
  20. 20. 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 )
  21. 21. 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

×