download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 8
Stack dengan Array
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat menghasilkan program
modular ADT stack yang
diimplementasikan dengan array
2
Outline Materi
•
•
•
•
Pengertian dan kegunaan stack
Implementasi stack dengan array
Operasi pada ADT stack
Contoh progam stack array
3
Stack
Stack S terdiri dari n elemen
S = ( ao , a1 , … , ai , ai+1 , …, an-1 )
Elemen paling bawah
Elemen paling atas
TOP
• Bentuk khusus dari ordered list
• LIFO : Last In First Out
Insert dan delete data di akhir list
• Akhir list ditandai dengan variabel TOP
4
Insert dan Delete Elemen
C
A
T
B
A
T
C
B
A
T
B
A
T
T
• T = TOP
5
Stack sebagai ADT
• Obyek : ordered list, jml elemen 0 atau lebih
• Operasi :
– Create
– IsFull
– Add
– IsEmpty
– Delete
6
Implementasi Stack dengan Array 1-D
#define MAX_STACK_SIZE
100
eltype
stack[MAX_QUEUE_SIZE];
int top = -1;
void add (int *top, eltype item) {
if (*top >= MAX_STACK_SIZE) {
printf (“stack full”);
return;
}
stack[++*top]=item;
}
7
eltype delete (int *top) {
if (*top == -1) {
printf (“stack empty”);
return;
}
return stack[*top];
*top--;
}
8
STACK
Basis operasi LIFO (Last In First Out), Elemen yang diambil /
dihapus adalah elemen yang baru dimasukkan / diinsert
PUSH
POP
C
B
D
A
E
STACK
9
OPERASI STACK
•
CREATE()
Untuk menciptakan stack yang baru dan kosong.
•
CLEAR()
Untuk menghapus semua elemen dalam Stack.
•
PUSH (ElementType e)
Untuk memasukkan 1 elemen ke dalam Stack.
•
POP (ElementType *e)
Untuk mengambil 1 elemen dari Stack.
•
int EMPTY()
Untuk mengecek apakah Stack masih kosong atau sudah berisi data.
•
int FULL()
Untuk mengecek apakah Stack sudah penuh atau masih bisa menampung data.
10
Contoh STACK
Contoh sebuah STACK memiliki jumlah maksimum 3 elemen:
CREATE( )
2
1
0
TOP
PUSH( 50 )
2
1
2
1
0
TOP
50
0
30
50
0
POP( *e)
60
30
50
TOP
TOP
2
1
0
2
1
0
PUSH( 20 )
PUSH( 30 )
2
1
PUSH( 60 )
30
50
TOP
CLEAR( )
60
30
50
TOP
2
1
0
TOP
11
Implementasi STACK
Implementasi STACK
•
Array
– Single STACK : menggunakan 1 ujung STACK utk PUSH maupun POP
– Double STACK : menggunakan 2 ujung STACK utk PUSH maupun POP
TOP1
TOP
(i)
(i)
Empty
TOP
Empty
TOP1
( ii )
TOP2
( ii )
TOP
( iii )
TOP2
Full
Single STACK dg Array
TOP2 TOP1
( iii )
Full
Double STACK dg Array
12