struktur data tumpukan
Tumpukan (Stack)
• Susunan koleksi data dimana proses
penambahan data (add) dan penghapusan data
(delete) selalu dilakukan melalui posisi akhir data.
• Posisi akhir dataÆ top of stack
• Stack bersifat LIFO L
( ast In First Out)
LIFO Æ Data yang terakhir masuk ke dalam stack
menjadi data yang pertama keluar dari stack
struktur data - tumpukan
1
Operasi Stack
Macam-macam operasi stack:
•
•
•
•
•
•
Push: menambah data pada stack (tumpukan paling atas)
Pop: menghapus data pada stack (tumpukan paling atas)
IsEmpty: menguji apakah stack dalam keadaan kosong
IsFull: menguji apakah stack dalam keadaan penuh
Print: menampilkan semua elemen (isi) stack
Clear: mengosongkan atau menghapus semua elemen
(isi) stack
• Peek (‘mengintip’): menampilkan atau melihat isi stack
pada posisi teratas (top of stack) saja
struktur data - tumpukan
2
Implementasi stack dengan struct
Langkah-langkah...
• Definisikan konstanta MAX_STACK untuk menyimpan nilai
maksimum isi stack
• Definisikan stack menggunakan tipe data struct (struct stack)
• Elemen struct stack adalah:
int top dan int data[MAX_STACK - 1]
(top Æ mencatat posisi data teratas
data Æ mencatat isi stack)
• Definisikan variabel tumpuk (yang bertipe stack)
struktur data - tumpukan
3
Deklarasi awal
• Deklarasi MAX_STACK
#define MAX_STACK 8
• Deklarasi STACK dengan tipe data struct
typedef struct STACK
{
int top;
int data[MAX_STACK - 1];
};
• Deklarasi tumpuk yang bertipe STACK
STACK tumpuk;
struktur data - tumpukan
4
Inisialisasi
Inisialisasi Stack
• Inisialisasi isitop = -1 , berarti isi stack
masih kosong, atau belum berisi data.
(ingat indeks array dalam bahasa C dimulai dari 0)
• top Æ variabel penanda yang
menunjukkan cacah data di dalam stack.
struktur data - tumpukan
5
Stack dalam keadaan kosong
Ilustrasi stack pada awal inisialisasi, stack dalam kondisi kosong.
struktur data - tumpukan
6
Stack dalam keadaan penuh
Ilustrasi stack dalam keadaan penuh.
struktur data - tumpukan
7
Fungsi IsEmpty dan IsFull
Fungsi IsEmpty (memeriksa apakah Stack masih kosong?)
•
Memeriksatop, jika top == -1, berarti stack masih kosong
Fungsi IsFull (memeriksa apakah Stack sudah penuh?)
•
Memeriksatop, jika top == [MAX_STACK-1], berarti stack sudah penuh
struktur data - tumpukan
8
Fungsi Push
Fungsi Push
• Untuk menambah data pada stack (tumpukan paling
atas). Data yang diinputkan selalu menjadi elemen
teratas Stack (Top of Stack).
Algoritma Push
• Apabila stackbelum terisi penuh, lakukan:
– Perbarui nilai top, dengan menambah satu
(increment) nilai top (top=top+1 atau top++)
– Isikan data baru ke stack (pada posisi top yang baru)
• Apabila stacktelah terisi penuh, batalkan penambahan
data, tampilkan pesan “stack telah terisi penuh“
struktur data - tumpukan
9
struktur data - tumpukan
Ilustrasi fungsi Push
10
Fungsi POP
Fungsi Pop
• Untuk menghapus data pada stack (tumpukan paling
atas). Data yang dihapus selalu menjadi elemen teratas
Stack (Top of Stack)
Algoritma Pop
• Apabila stacktidak dalam keadaan kosong, lakukan:
– Tampilkan data yang akan dihapus, hapus data
tersebut.
– Perbarui nilai top, dengan mengurangi satu
(decrement) nilai top (top=top-1 atau top--)
• Apabila stackdalam keadaan kosong, batalkan
penghapusan data, tampilkan pesan “stack dalam
keadaan kosong“
struktur data - tumpukan
11
struktur data - tumpukan
Ilustrasi fungsi Pop
12
Fungsi Print
Fungsi Print
• Untuk menampilkan semua elemen (isi) stack.
• Menggunakan proses perulangan, dimulai dari
indeks array terbesar, diteruskan ke indeks yang
lebih kecil.
• Nilai top tidak diubah
(karena hanya menampilkan isi stack saja)
struktur data - tumpukan
13
Ilustrasi fungsi Print
struktur data - tumpukan
14
Fungsi Clear
Fungsi Clear
•
Untuk mengosongkan atau menghapus semua elemen
(isi) stack
•
Cara1. Menggunakanproses Pop yang diulang
sebanyak Top+1 kali
Perhatikan, perulangan bukan sebanyak MAX_STACK
•
Cara2. Mengubah nilai Top dengan -1 T
( op = -1)
struktur data - tumpukan
15
Fungsi Peek
Fungsi Peek (‘mengintip’)
• Digunakan untuk menampilkan atau melihat isi
stack pada posisi teratas (top of stack) saja.
Perhatikan, Bedakan dengan menampilkan nilai top.
struktur data - tumpukan
16
Sumber Referensi
– James Roberge, Stefan Brandle, dan David
Whittington, 2003, C++ Data Structures 2nd
Edition, Jones and Bartlett Publishers, Inc.,
Sudbury, Massachusetts.
– Antonius Rachmat Chrismanto – UKDW
Yogyakarta.
– P. Insap Santosa, 1992, Struktur Data
Menggunakan Turbo Pascal 6.0, Penerbit
Andi, Yogyakarta.
– Berbagai sumber dari Internet.
struktur data - tumpukan
17
• Susunan koleksi data dimana proses
penambahan data (add) dan penghapusan data
(delete) selalu dilakukan melalui posisi akhir data.
• Posisi akhir dataÆ top of stack
• Stack bersifat LIFO L
( ast In First Out)
LIFO Æ Data yang terakhir masuk ke dalam stack
menjadi data yang pertama keluar dari stack
struktur data - tumpukan
1
Operasi Stack
Macam-macam operasi stack:
•
•
•
•
•
•
Push: menambah data pada stack (tumpukan paling atas)
Pop: menghapus data pada stack (tumpukan paling atas)
IsEmpty: menguji apakah stack dalam keadaan kosong
IsFull: menguji apakah stack dalam keadaan penuh
Print: menampilkan semua elemen (isi) stack
Clear: mengosongkan atau menghapus semua elemen
(isi) stack
• Peek (‘mengintip’): menampilkan atau melihat isi stack
pada posisi teratas (top of stack) saja
struktur data - tumpukan
2
Implementasi stack dengan struct
Langkah-langkah...
• Definisikan konstanta MAX_STACK untuk menyimpan nilai
maksimum isi stack
• Definisikan stack menggunakan tipe data struct (struct stack)
• Elemen struct stack adalah:
int top dan int data[MAX_STACK - 1]
(top Æ mencatat posisi data teratas
data Æ mencatat isi stack)
• Definisikan variabel tumpuk (yang bertipe stack)
struktur data - tumpukan
3
Deklarasi awal
• Deklarasi MAX_STACK
#define MAX_STACK 8
• Deklarasi STACK dengan tipe data struct
typedef struct STACK
{
int top;
int data[MAX_STACK - 1];
};
• Deklarasi tumpuk yang bertipe STACK
STACK tumpuk;
struktur data - tumpukan
4
Inisialisasi
Inisialisasi Stack
• Inisialisasi isitop = -1 , berarti isi stack
masih kosong, atau belum berisi data.
(ingat indeks array dalam bahasa C dimulai dari 0)
• top Æ variabel penanda yang
menunjukkan cacah data di dalam stack.
struktur data - tumpukan
5
Stack dalam keadaan kosong
Ilustrasi stack pada awal inisialisasi, stack dalam kondisi kosong.
struktur data - tumpukan
6
Stack dalam keadaan penuh
Ilustrasi stack dalam keadaan penuh.
struktur data - tumpukan
7
Fungsi IsEmpty dan IsFull
Fungsi IsEmpty (memeriksa apakah Stack masih kosong?)
•
Memeriksatop, jika top == -1, berarti stack masih kosong
Fungsi IsFull (memeriksa apakah Stack sudah penuh?)
•
Memeriksatop, jika top == [MAX_STACK-1], berarti stack sudah penuh
struktur data - tumpukan
8
Fungsi Push
Fungsi Push
• Untuk menambah data pada stack (tumpukan paling
atas). Data yang diinputkan selalu menjadi elemen
teratas Stack (Top of Stack).
Algoritma Push
• Apabila stackbelum terisi penuh, lakukan:
– Perbarui nilai top, dengan menambah satu
(increment) nilai top (top=top+1 atau top++)
– Isikan data baru ke stack (pada posisi top yang baru)
• Apabila stacktelah terisi penuh, batalkan penambahan
data, tampilkan pesan “stack telah terisi penuh“
struktur data - tumpukan
9
struktur data - tumpukan
Ilustrasi fungsi Push
10
Fungsi POP
Fungsi Pop
• Untuk menghapus data pada stack (tumpukan paling
atas). Data yang dihapus selalu menjadi elemen teratas
Stack (Top of Stack)
Algoritma Pop
• Apabila stacktidak dalam keadaan kosong, lakukan:
– Tampilkan data yang akan dihapus, hapus data
tersebut.
– Perbarui nilai top, dengan mengurangi satu
(decrement) nilai top (top=top-1 atau top--)
• Apabila stackdalam keadaan kosong, batalkan
penghapusan data, tampilkan pesan “stack dalam
keadaan kosong“
struktur data - tumpukan
11
struktur data - tumpukan
Ilustrasi fungsi Pop
12
Fungsi Print
Fungsi Print
• Untuk menampilkan semua elemen (isi) stack.
• Menggunakan proses perulangan, dimulai dari
indeks array terbesar, diteruskan ke indeks yang
lebih kecil.
• Nilai top tidak diubah
(karena hanya menampilkan isi stack saja)
struktur data - tumpukan
13
Ilustrasi fungsi Print
struktur data - tumpukan
14
Fungsi Clear
Fungsi Clear
•
Untuk mengosongkan atau menghapus semua elemen
(isi) stack
•
Cara1. Menggunakanproses Pop yang diulang
sebanyak Top+1 kali
Perhatikan, perulangan bukan sebanyak MAX_STACK
•
Cara2. Mengubah nilai Top dengan -1 T
( op = -1)
struktur data - tumpukan
15
Fungsi Peek
Fungsi Peek (‘mengintip’)
• Digunakan untuk menampilkan atau melihat isi
stack pada posisi teratas (top of stack) saja.
Perhatikan, Bedakan dengan menampilkan nilai top.
struktur data - tumpukan
16
Sumber Referensi
– James Roberge, Stefan Brandle, dan David
Whittington, 2003, C++ Data Structures 2nd
Edition, Jones and Bartlett Publishers, Inc.,
Sudbury, Massachusetts.
– Antonius Rachmat Chrismanto – UKDW
Yogyakarta.
– P. Insap Santosa, 1992, Struktur Data
Menggunakan Turbo Pascal 6.0, Penerbit
Andi, Yogyakarta.
– Berbagai sumber dari Internet.
struktur data - tumpukan
17