11/28/2018 ICB/Alsrudat/W07S1 2
11/28/2018 ICB/Alsrudat/W07S1 3
11/28/2018 ICB/Alsrudat/W07S1 4
Pengertian Stack
• Stack adalah sebuah abstract data type (ADT) yang berisi koleksi data
item yang hanya dapat diakses pada akhir bagian (atas) stack, biasa
disebut top.
• Prinsip pada stack: LIFO (LAST IN FIRST OUT)
• Artinya: Item terakhir yang kita masukkan ke dalam sebuah stack
adalah item yang paling pertama harus kita keluarkan
• Tambah atau Hapus item hanya melalui TOP.
11/28/2018 ICB/Alsrudat/W07S1 5
Operasi Dasar STACK
• PUSH
• Tambah item ke tumpukan
• POP
• Ambil item dari tumpukan
11/28/2018 ICB/Alsrudat/W07S1 6
PUSH dan POP
11/28/2018 ICB/Alsrudat/W07S1 7
Pemakaian STACK
• Pemanggilan prosedur
• Perhitungan ekspresi aritmatika
• Rekursif
• Back track algorithm
11/28/2018 ICB/Alsrudat/W07S1 8
Karakteristik STACK
• Data hanya dapat di-insert pada posisi top stack
• Data hanya dapat di-delete pada posisi top stack
• Data tidak dapat di-delete dari tengah-tengah stack tanpa
memindahkan item yang ada pada atasnya terlebih dahulu
• Stack dapat diimplementasikan dengan:
• Array
• Linked List
11/28/2018 ICB/Alsrudat/W07S1 9
Implementasi Stack dengan Array
11/28/2018 10
ICB/Alsrudat/W07S1
Beberapa model penyimpanan
11/28/2018 ICB/Alsrudat/W07S1 11
Beberapa model penyimpanan
• Pendekatan yang lebih baik adalah dengan indeks [0] di posisi bawah
stack.
Top
11/28/2018 ICB/Alsrudat/W07S1 12
Definisi Prototype
void CreateEmptyStack (Stack* S, int _Size);
/*Membuat sebuah stack kosong, berukuran S*/
11/28/2018 ICB/Alsrudat/W07S1 14
Definisi Type Statik
#define Max = 20
#define Nil -1= -1
typedef int address;
typedef int infotype;
typedef struct
{
infotype T[Max]; /* memori penyimpanan elemen*/
/* ukuran semua stack sama =Max*/
address TOP; /* alamat TOP: elemen puncak*/
} Stack;
11/28/2018 ICB/Alsrudat/W07S1 15
Definisi Type Dinamik
const Nil = -1
typedef int address;
typedef int infotype;
typedef struct
{
infotype * T; /* memori penyimpanan elemen*/
address TOP; /* alamat TOP: elemen puncak*/
int Size; /* Ukuran stack, banyaknya elemen */
} Stack;
while (!IsStackEmpty(S)) {
Pop (&S, &X);
Printf(“%d”, X);
}
return 0;
}
11/28/2018 ICB/Alsrudat/W07S1 17
Implementasi Stack dengan Linked List
11/28/2018 ICB/Alsrudat/W07S1 18
11/28/2018 ICB/Alsrudat/W07S1 19
11/28/2018 ICB/Alsrudat/W07S1 20
Beberapa model penyimpanan stack
dengan linked list
• Penanda TOP
• Awal List :
• Push: selalu insertfirst
• Pop: selalu deletefirst
• Di akhir list:
• Push: selalu selalu insertlast
• Pop: selalu deletelast
11/28/2018 ICB/Alsrudat/W07S1 21
Penanda TOP :
Awal List
11/28/2018 ICB/Alsrudat/W07S1 22
Definisi Prototype
address Alokasi(Infotype X);
/*Mengirim true jika stack penuh dan false jika tidak penuh*/
typedef struct
{
address Top;
int count;
} StackList;
11/28/2018 ICB/Alsrudat/W07S1 24
#include <stdio.h>
#include <stdlib.h>
#include "stacklist.h"
Driver int main(int argc, char *argv[])
{
/*KAMUS*/
StackList S;
/*ALGORITMA*/
CreateEmptyStack(&S);
Push(&S,Alokasi(20));
Push(&S,Alokasi(30));
Push(&S,Alokasi(90));
Push(&S,Alokasi(60));
/*Show Info All Element*/
printf("Count Element = %d\n",Count(S));
printf("==Info Element==\n");
while(!IsStackEmpty(S))
{
address pTemp;
Pop(&S,&pTemp);
printf("%d\n",Info(pTemp));
}
return 0;
11/28/2018 } ICB/Alsrudat/W07S1 25
Daftar Pustaka
• Liem, Inggriani (2008). Draft Diktat Struktur Data. Teknik Informatika
ITB
11/28/2018 ICB/Alsrudat/W07S1 26