SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Made  Henny  Aryani, ST
Kumpulan data dimana penambahan dan
penghapusan data hanya dapat dilakukan
diposisi akhir (TOP)
               (TOP).
Data yang terakhir masuk ke dalam stack
maka akan menjadi data pertama yang
keluar.
Sifat     stack      ini   dikenal dengan
Last In – First Out (LIFO)
OPERASI            KETERANGAN
Push      Menambahkan item pada tumpukan
                             p     p
          teratas
Pop       Mengambil item pada tumpukan
          teratas
Clear     Mengosongkan stack
IsEmpty Mengecek apakah stack kosong
IsFull  Mengecek apakah stack penuh
Implementasi stack dalam pemrograman
dapat 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
Definisikan Stack dengan suatu struct.
   f
Definisikan konstanta MAX_STACK untuk
menyimpan maksimum ini stack.
                 k            k
Elemen struct Stack adalah array data
Posisi teratas adalah TOP
                d l h
Contoh deklarasi MAX_STACK
C t h d kl     i MAX STACK
#define MAX_STACK 10
Contoh deklarasi STACK dengan struct dan 
array data
struct STACK{
   int top;
   int data[MAX_STACK];
};
Deklarasi/buat variabel dari struct
STACK S;
struct STACK
                        {
                             int top;
                             int data[MAX_STACK];
                                                ;
                        };
top   data[10]
                 Index ke - 9
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                     ..
                 Index ke - 0
1
Pada 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 h
Top Of Stack akan selalu bergerak hingga 
mencapai MAX of STACK yang menyebabkan 
                f                    b bk
stack 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 penuh
Dengan 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 
kosong
Dengan cara memeriksa top of stack, jika 
                      k       f     k k
masih -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                     Stack
Data yang diinputkan selalu menjadi elemen
teratas Stack (yang ditunjuk oleh Top)
Proses penambahan dil k k d
P              b h dilakukan dengan pengecekan
                                           k
stack 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             k
indeksnya sesuai dengan top of stack
Lakukan di‐decrement nilai top sehingga 
  k k d d                l       h
jumlah 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‐elemen
U t k          k          l      l
data Stack
Dengan menggunakan perulangan untuk
mengosongkan semua nilai array secara
terbalik ( d t di k
              data diakses d i i d k array
                            dari indeks
tertinggi terlebih dahulu baru ke indeks yang
lebih 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‐elemen
U t k       ilk          l      l
data Stack
Dengan menggunakan perulangan untuk
menampilkan semua nilai array secara
terbalik ( d t di k
              data diakses d i i d k array
                            dari indeks
tertinggi terlebih dahulu baru ke indeks yang
lebih 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
Stack
Stack
Stack
Stack

Weitere ähnliche Inhalte

Was ist angesagt?

Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianGeorgius Rinaldo
 
aljabar kalkulus dan relasional
aljabar kalkulus dan relasionalaljabar kalkulus dan relasional
aljabar kalkulus dan relasionalArdiawan Harisa
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)Kelinci Coklat
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan biedoen
 
Materi kuliah 10 stack
Materi kuliah 10   stackMateri kuliah 10   stack
Materi kuliah 10 stackBudi Yono
 
Materi Struktur Data Stack
Materi Struktur Data StackMateri Struktur Data Stack
Materi Struktur Data StackMeta N
 
Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)Fahuda E
 

Was ist angesagt? (10)

Resume praktikum 7__queue
Resume praktikum 7__queueResume praktikum 7__queue
Resume praktikum 7__queue
 
Stack atau tumpukan
Stack atau tumpukanStack atau tumpukan
Stack atau tumpukan
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
aljabar kalkulus dan relasional
aljabar kalkulus dan relasionalaljabar kalkulus dan relasional
aljabar kalkulus dan relasional
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Materi kuliah 10 stack
Materi kuliah 10   stackMateri kuliah 10   stack
Materi kuliah 10 stack
 
5 STACK
5 STACK5 STACK
5 STACK
 
Materi Struktur Data Stack
Materi Struktur Data StackMateri Struktur Data Stack
Materi Struktur Data Stack
 
Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)
 

Andere mochten auch

Cara menyeting pop3
Cara menyeting pop3Cara menyeting pop3
Cara menyeting pop3putusumaye
 
Smc Presented
Smc PresentedSmc Presented
Smc Presentedelfman3
 
Kalkınma Ajansları Bölge Planları İncelemesi
Kalkınma Ajansları Bölge Planları İncelemesiKalkınma Ajansları Bölge Planları İncelemesi
Kalkınma Ajansları Bölge Planları İncelemesiÜmran Öztürk (1800+)
 
Gerbang logika
Gerbang logikaGerbang logika
Gerbang logikaputusumaye
 
Gerbang kombinasi l1
Gerbang kombinasi l1Gerbang kombinasi l1
Gerbang kombinasi l1putusumaye
 
Gerbang logika
Gerbang logikaGerbang logika
Gerbang logikaputusumaye
 
Dr.vishal mastocytoma
Dr.vishal mastocytomaDr.vishal mastocytoma
Dr.vishal mastocytomadrvishalpatel
 
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)Ümran Öztürk (1800+)
 
Water borne diseases
Water borne diseasesWater borne diseases
Water borne diseasesTahir Ali
 
Lightweight Interactions for Reciprocal Cooperation in a Social Network Game
Lightweight Interactions for Reciprocal Cooperation in a Social Network GameLightweight Interactions for Reciprocal Cooperation in a Social Network Game
Lightweight Interactions for Reciprocal Cooperation in a Social Network GameMasanori Takano
 

Andere mochten auch (17)

Cara menyeting pop3
Cara menyeting pop3Cara menyeting pop3
Cara menyeting pop3
 
Gayus
GayusGayus
Gayus
 
Pertemuan 3
Pertemuan 3Pertemuan 3
Pertemuan 3
 
Smc Presented
Smc PresentedSmc Presented
Smc Presented
 
2 1 bussistem
2 1 bussistem2 1 bussistem
2 1 bussistem
 
Flow control
Flow controlFlow control
Flow control
 
Kalkınma Ajansları Bölge Planları İncelemesi
Kalkınma Ajansları Bölge Planları İncelemesiKalkınma Ajansları Bölge Planları İncelemesi
Kalkınma Ajansları Bölge Planları İncelemesi
 
Gerbang logika
Gerbang logikaGerbang logika
Gerbang logika
 
Swot pan muzik2011
Swot pan muzik2011Swot pan muzik2011
Swot pan muzik2011
 
Gerbang kombinasi l1
Gerbang kombinasi l1Gerbang kombinasi l1
Gerbang kombinasi l1
 
Gerbang logika
Gerbang logikaGerbang logika
Gerbang logika
 
1 pendahuluan
1 pendahuluan1 pendahuluan
1 pendahuluan
 
Dr.vishal mastocytoma
Dr.vishal mastocytomaDr.vishal mastocytoma
Dr.vishal mastocytoma
 
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)
Türkiye ve Dünyada Bölgesel Kalkınma Ajansları (Türkiye ve Polonya Örnekleri)
 
Detroit
DetroitDetroit
Detroit
 
Water borne diseases
Water borne diseasesWater borne diseases
Water borne diseases
 
Lightweight Interactions for Reciprocal Cooperation in a Social Network Game
Lightweight Interactions for Reciprocal Cooperation in a Social Network GameLightweight Interactions for Reciprocal Cooperation in a Social Network Game
Lightweight Interactions for Reciprocal Cooperation in a Social Network Game
 

Ähnlich wie Stack (15)

Tistrukdat4
Tistrukdat4Tistrukdat4
Tistrukdat4
 
3 stack2
3 stack23 stack2
3 stack2
 
Pert.6 stack
Pert.6 stackPert.6 stack
Pert.6 stack
 
Stack_Queue.pdf
Stack_Queue.pdfStack_Queue.pdf
Stack_Queue.pdf
 
STACK .pdf
STACK .pdfSTACK .pdf
STACK .pdf
 
ppt_stack_kelompok_5_ppt.ppt
ppt_stack_kelompok_5_ppt.pptppt_stack_kelompok_5_ppt.ppt
ppt_stack_kelompok_5_ppt.ppt
 
ppt_stack_kelompok_5_ppt.ppt
ppt_stack_kelompok_5_ppt.pptppt_stack_kelompok_5_ppt.ppt
ppt_stack_kelompok_5_ppt.ppt
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Resume praktikum 6 stack
Resume praktikum 6 stackResume praktikum 6 stack
Resume praktikum 6 stack
 
Stack Linier
Stack LinierStack Linier
Stack Linier
 
Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_
 
struct & stack
struct & stackstruct & stack
struct & stack
 
Perkuliahan ke 4 Struktur Data
Perkuliahan ke 4 Struktur DataPerkuliahan ke 4 Struktur Data
Perkuliahan ke 4 Struktur Data
 
9.double linked list circular
9.double linked list circular9.double linked list circular
9.double linked list circular
 

Stack

  • 2.
  • 3. Kumpulan data dimana penambahan dan penghapusan data hanya dapat dilakukan diposisi akhir (TOP) (TOP). Data yang terakhir masuk ke dalam stack maka akan menjadi data pertama yang keluar. Sifat stack ini dikenal dengan Last In – First Out (LIFO)
  • 4. OPERASI KETERANGAN Push Menambahkan item pada tumpukan p p teratas Pop Mengambil item pada tumpukan teratas Clear Mengosongkan stack IsEmpty Mengecek apakah stack kosong IsFull Mengecek apakah stack penuh
  • 5. Implementasi stack dalam pemrograman dapat 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
  • 6. Definisikan Stack dengan suatu struct. f Definisikan konstanta MAX_STACK untuk menyimpan maksimum ini stack. k k Elemen struct Stack adalah array data Posisi teratas adalah TOP d l h
  • 7. Contoh deklarasi MAX_STACK C t h d kl i MAX STACK #define MAX_STACK 10 Contoh deklarasi STACK dengan struct dan  array data struct STACK{ int top; int data[MAX_STACK]; }; Deklarasi/buat variabel dari struct STACK S;
  • 8. struct STACK { int top; int data[MAX_STACK]; ; }; top data[10] Index ke - 9 .. .. .. .. .. .. .. .. .. .. .. Index ke - 0
  • 9. 1 Pada 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 h Top Of Stack akan selalu bergerak hingga  mencapai MAX of STACK yang menyebabkan  f b bk stack PENUH! void inisialisasi () { S top = -1; } S.top 1;
  • 10. void i i i li id inisialisasi () i { S.top = -1; } top data[10] Index ke - 9 .. .. -1 .. .. .. .. .. .. (stack kosong) .. .. .. Index ke - 0
  • 11. Untuk memeriksa apakah stack sudah penuh Dengan 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;} }
  • 12. 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
  • 13. Untuk memeriksa apakah data Stack masih  kosong Dengan cara memeriksa top of stack, jika  k f k k masih -1 berarti data Stack masih kosong int IsEmpty() { if (S.top == -1) return 1; else return 0; }
  • 14. int IsEmpty() IsEmpt () { if (S.top == -1) return 1; top data[10] else Index ke - 9 return 0; .. .. } -1 .. .. .. .. .. .. (stack kosong) .. .. .. Index ke - 0
  • 15. Untuk memasukkan elemen ke data Stack. Unt k memas kkan Stack Data yang diinputkan selalu menjadi elemen teratas Stack (yang ditunjuk oleh Top) Proses penambahan dil k k d P b h dilakukan dengan pengecekan k stack 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.
  • 16. 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
  • 17. Untuk mengambil data Stack yang terletak  paling atas (TOP). Hapus data teratas stack dengan mengakses  d kd k indeksnya sesuai dengan top of stack Lakukan di‐decrement nilai top sehingga  k k d d l h jumlah elemen stack berkurang
  • 18. 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
  • 19. Untuk mengosongkan semua elemen‐elemen U t k k l l data Stack Dengan menggunakan perulangan untuk mengosongkan semua nilai array secara terbalik ( d t di k data diakses d i i d k array dari indeks tertinggi terlebih dahulu baru ke indeks yang lebih kecil )
  • 20. 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
  • 21. Untuk menampilkan semua elemen‐elemen U t k ilk l l data Stack Dengan menggunakan perulangan untuk menampilkan semua nilai array secara terbalik ( d t di k data diakses d i i d k array dari indeks tertinggi terlebih dahulu baru ke indeks yang lebih kecil )
  • 22. 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