STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.

Slides:



Advertisements
Presentasi serupa
Queue (Antrian).
Advertisements

Dr. Anto Satriyo Nugroho, M.Eng
Single linked list.
STRUKTUR DATA array stack dan queue
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Rahmat Deddy Rianto Dako, ST, M.Eng
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
LINKED LIST Single Linked List.
Linked List Pembuatan Simpul Awal.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Pertemuan 5 STACK atau TUMPUKAN IMAM SIBRO MALISI NIM :
Queue.
Algoritma dan Struktur Data
STACK (Tumpukan).
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STACK.
STACK.
Struktur Data (Data Structure) – IS 2313
STACK.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Algorithm and Data Structures.
Pertemuan ketujuh Struktur data st3telkom.ac.id
stack ==tumpukan== Tenia wahyuningrum st3 telkom purwokerto
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
BAB 3 STACK (TUMPUKAN).
STACK.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
Pertemuan 8 Stack dengan Array
Stack Pertemuan 11.
Struktur Data Materi II LINKED LIST / SENARAI BERKAIT  List: Koleksi dari obyek-obyek homogen dengan sifat setiap elemen, kecuali yang terakhir pasti.
Universitas Budi Luhur
Stack.
Sapta Candra Miarsa,S.T.,M.T.
LINKED LIST by Yohana N.
STACK Anifuddin Azis.
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA STACK.
STRUKTUR DATA STACK.
Abstract Data Type (ADT) and Stack Array
STRUKTUR DATA QUIZ.
Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
STACK 6.3 & 7.3 NESTED LOOP.
STACK (Tumpukan).
Struktur Data Khoiriya Latifa, M.Kom.
TEAM 1 Cut Hayatul Wardani ( ) Saputri Phonna ( ) Azhary (140502)
STRUKTUR DATA STACK.
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Stack.
STACK Yohana Nugraheni.
Algoritma dan Struktur Data
Algoritme dan Stuktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
Stack.
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
STRUKTUR DATA PERTEMUAN 4
STRUKTUR DATA STACK.
STRUKTUR DATA Stack atau Tumpukan.
Double STACK 6.3 & 7.3 NESTED LOOP.
Linear Doubly Linked List
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
SINGLE LINKED LIST (SLL)
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui satu tempat yaitu posisi paling atas yang disebut dengan Top. Hal ini membuat pemrosesan data mengikuti prinsip LIFO (Last In First Out), yaitu data yang terakhir masuk akan menjadi yang pertama keluar. Dalam dunia nyata contoh stack atau tumpukan seperti halnya pada tumpukan kartu dan tumpukan DVD.

Pada struktur data bentuk stack digambarkan dalam bentuk: Contoh: Elemen Data Top Bottom 29 Top 16 9 21 14 Bottom Operasi pada stack dapat diimplementasikan dengan menggunakan array, structure (record) dan pointer.

OPERASI-OPERASI PADA STACK 1. Membuat stack Mendefinisikan / menginisialisasi kondisi awal stack (kosong) 2. Mengecek stack kosong Mengecek stack dalam kondisi kosong atau tidak? 3. Mengecek stack penuh Mengecek stack dalam kondisi penuh atau tidak? 4. Push Menambah elemen baru pada stack yang berisi Info Baru (IB) pada posisi paling atas (Top) 5. Pop Mengambil elemen stack paling atas (Top) dan simpan infonya dalam Info Pop (IP) 6. Mencetak isi stack Mencetak seluruh isi stack

Operasi Push Menambah elemen baru yang berisi info baru (IB) dan diletakkan pada posisi paling atas. 14 21 9 16 29 29 Top Top 16 9 21 14 Push(stack,12) 12 Kondisi stack setelah push

Operasi Pop Mengambil elemen stack yang berada pada posisi paling atas dan infonya disimpan dalam info pop (IP) 14 21 9 16 29 Top 15 Top 15 29 16 9 IP = 21 14 Pop(stack) Kondisi stack setelah pop

IMPLEMENTASI STACK MENGGUNAKAN ARRAY Jumlah elemen stack yang mampu ditampung besarnya tergantung jumlah array pada saat mendefinisikan stack. Array dengan index ke 0 digunakan untuk menyimpan nilai Top. Contoh: Stack[8] 7 6 5 4 3 2 1 29 29 Top 16 16 9 9 Isi stack: 21 21 4

1. Mendefinisikan kondisi awal stack (kosong) void buatstack() { stack[0] = 0; } 2. Mengecek stack apakah dalam kondisi kosong atau tidak? int stackkosong() { if(top == 0) return(1); else return(0); } 3. Mengecek stack apakah dalam kondisi penuh atau tidak? int stackpenuh() { if(top == max-1) return(1); else return(0); }

4. Menambah elemen baru (Push) Contoh: Stack[7] 6 5 4 3 2 1 Top = 4 Isi stack mula-mula: 29 16 9 21 Top 29 Push(15) 15 16 Top = Top + 1 = 5 5 9 Isi stack akhir: 15 29 16 9 21 21 4 Caranya: 1. Naikkan nilai topnya 2. Tambahkan Info Baru (IB) pada posisi top 3. Simpan nilai top pada posisi index ke 0

5. Mengambil elemen teratas (Pop) Contoh: Stack[7] Top = 4 6 5 4 3 2 1 Isi stack mula-mula: 29 16 9 21 Pop() Top 29 29 IP = 16 Top = Top - 1 = 3 3 9 Isi stack akhir: 16 9 21 21 4 Caranya: 1. Ambil info pada posisi top dan simpan dalam Info Pop (IP) 2. Turunkan nilai topnya 3. Simpan nilai top pada posisi index ke 0

6. Mencetak isi stack Proses pencetakan dimulai dari index top hingga index ke 1. Contoh: Stack[7] Top 6 5 4 3 2 1 11 11 Isi stack: 15 15 29 29 16 16 9 9 21 21 6 Cetak

Implementasi stack dengan array memiliki kelemahan karena: Stack hanya bisa menyimpan data dalam bentuk bilangan integer. Mengapa? Top 6 5 4 3 2 1 11 15 Jumlah data yang dapat disimpan antara logik dan fisik tidak sama (tidak sinkron). Mengapa? 29 16 Untuk mengatasi hal tersebut maka elemen stack dan top dipisah. 9 Salah satu cara dengan mengimplementasi-kan stack menggunakan structure/record . 21 6

IMPLEMENTASI STACK MENGGUNAKAN RECORD Stack terdiri dari dua buah field masing-masing field elemen dan top. Field elemen memiliki tipe array yang berfungsi untuk menyimpan data, dapat berupa numerik maupun karakter. Field top memiliki tipe integer yang berfungsi untuk menyimpan nilai top. 29 21 9 16 15 4 Top Elemen Stack 5 4 3 2 1 struct tipestack{ int elemen[max]; int top; } stack;

1. Mendefinisikan kondisi awal stack (kosong) void buatstack() { stack.top = -1; } 2. Mengecek stack apakah dalam kondisi kosong atau tidak? int stackkosong() { if(stack.top == -1) return(1); else return(0); } 3. Mengecek stack apakah dalam kondisi penuh atau tidak? int stackpenuh() { if(stack.top == max-1) return(1); else return(0); }

4. Menambah elemen baru (Push) Contoh: Stack[7] 6 5 4 3 2 1 Stack.Top = 4 Isi stack mula-mula: 29 16 9 21 17 Top 29 Push(15) 15 16 Stack.Top = Stack.Top + 1 = 5 5 9 Isi stack akhir: 15 29 16 9 21 17 21 17 4 Stack Caranya: 1. Naikkan nilai topnya 2. Tambahkan Info Baru (IB) pada field elemen sesuai index top 3. Simpan nilai top pada field Top

5. Mengambil elemen teratas (Pop) Contoh: Stack[7] Stack.Top = 4 6 5 4 3 2 1 Isi stack mula-mula: 29 16 9 21 17 Pop() Top 29 29 IP = 16 Stack.Top = Stack.Top - 1 = 3 3 9 Isi stack akhir: 16 9 21 17 21 17 4 Stack Caranya: 1. Ambil info pada posisi top dan simpan dalam Info Pop (IP) 2. Turunkan nilai topnya 3. Simpan nilai top pada pada field Top.

6. Mencetak isi stack Proses pencetakan dimulai dari index top hingga index ke 0. Contoh: Stack[7] 6 5 4 3 2 1 11 11 Top 15 15 29 29 16 16 Isi stack: 9 9 21 21 17 17 6 Cetak Stack

Implementasi stack dengan record masih memiliki kelemahan karena: 29 21 9 16 Top 15 11 Stack[7] 17 6 Stack Penyimpanan data pada elemen stack masih menggunakan array, sehingga stack bersifat statis. Artinya jumlah data yang dapat di-tampung pada stack terbatas sesuai dengan jumlah array yang disediakan. Namun jika array hanya sebagian saja yang digunakan maka akan mubajir. 6 5 4 3 2 1 Cara untuk mengatasi hal tersebut adalah membuat stack bersifat dinamis yaitu dengan menggunakan pointer dalam bentuk linked list.

IMPLEMENTASI STACK MENGGUNAKAN POINTER Stack dengan pointer dapat diimplementasi dalam bentuk linked list tunggal (singly linked list) atau dapat juga dalam bentuk linked list ganda (doubly linked list). Pada pembahasan berikut ini implementasi stack menggunakan linked list ganda (doubly linked list). Elemen stack dibuat dalam bentuk node yang terdiri dari field info, kiri dan kanan. Stack 17 21 9 16 Bottom Top typedef int tipeinfo; typedef struct node *tipeptr; struct node{ tipeinfo info; tipeptr kiri; tipeptr kanan; }; tipeptr bottom,top; Node NULL Kiri Info Kanan

1. Mendefinisikan kondisi awal stack (kosong) void buatstack() { bottom = NULL; top = NULL } 2. Mengecek stack apakah dalam kondisi kosong atau tidak? int stackkosong() { if(top == NULL) return(1); else return(0); }

3. Menambah elemen baru (Push) Caranya: Buat node baru beri nama NB. Isi info dengan IB, Kiri dan Kanan NULL. b. Arahkan Top->Kanan ke NB dan NB->Kiri ke Top. c. Pindahkan Top ke NB. NB Stack 17 21 9 16 Bottom Top Isi stack mula-mula: 16 9 21 17 Push(33) 33 Isi stack akhir: 33 16 9 21 17

4. Mengambil elemen teratas (Pop) Caranya: Ambil info pada node Top dan simpan pada Info Pop (IP). b. Tandai node Top dengan Hapus. c. Turunkan Top satu node di bawahnya. d. Hapus node yang bernama Hapus dan ganti Top->Kanan dengan NULL. Stack 17 21 9 16 Bottom 12 Top 12 Hapus Isi stack mula-mula: 12 16 9 21 17 Pop() IP = Isi stack akhir: 16 9 21 17

5. Mencetak isi stack Proses pencetakan dimulai dari elemen Top hingga elemen Bottom. Contoh: Top 12 Stack 17 21 9 16 Bottom 12 Bantu 16 9 Isi stack: 21 17 Cetak