Stack. Gambar 1.1 Stack

dokumen-dokumen yang mirip
Algoritma Dan Struktur Data II. Queue

Algoritma Pemrograman & Struktur Data

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

Pertemuan 7. REVIEW dan QUIS

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

Struktur Data Array. Rijal Fadilah S.Si

BAB IV Antrian(Queue)

Algoritma dan Struktur Data STACK

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Tumpukan(Stack)!! " # $ %&' $ %& ( ) ( * +, / ( (

Algoritma Dan Struktur Data II

Algoritma Dan Struktur Data II

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

S T A C K ( T U M P U K A N )

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

BAB II STACK (TUMPUKAN)

Struktur Data dan Algoritma

BAB 3 STACK (TUMPUKAN)

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

RENCANA PEMBELAJARAN

4. STACK / TUMPUKAN TEORI PENUNJANG

TIF 4201 Algoritma Dan Struktur Data

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

S TA C K Sunu Wibirama

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO).

BAB III QUEUE (ANTRIAN)

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

Algoritma dan Struktur Data. Ramos Somya

Pertemuan 10. Tumpukan (Stack) Dipersiapkan oleh : Boldson Herdianto. S., S.Kom., MMSI.

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

1. E = a + 2b d + dh f g. Ubah ke dalam notasi postfix: a. Menggunakan Algoritma b. Secara manual c. Dari pohon biner menggunakan Stack

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

05. Double Linked List

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.

Modul Praktikum Algoritma dan Struktur Data

04. Single Linked List

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

STRUKTUR DATA Pertemuan 1 s.d 8

BAB II STACK Atau TUMPUKAN

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

LIST LINIER & STACK. Pertemuan 6 Yani sugiyani, M.Kom

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

MODUL IV STACK A. TUJUAN

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

# NINE Queue dengan Array

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data. Queue

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

ARNA FARIZA YULIANA SETIOWATI

ARNA FARIZA YULIANA SETIOWATI

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Lab. Teknik Informatika Struktur Data 1

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

STRUKTUR DATA. Literatur

SATUAN ACARA PERKULIAHAN MATA KULIAH : STRUKTUR DATA KODE / SKS : IK410 / 2 SKS

STRUKTUR DATA Pertemuan 4

A. TUJUAN PEMBELAJARAN

STACK/TUMPUKAN. R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU

PERTEMUAN KE-6. Pertemuan 6

DIG1G3 Implementasi Struktur Data

BAB VIII QUEUE (ANTRIAN)

STRUKTUR DATA (2) Single Linked List

Materi 9 : QUEUE (ANTREAN) Dosen:

LAPORAN PRAKTIKUM IV. Oleh:

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

LIST. Dewi Sartika, M.Kom

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

LAPORAN PRAKTIKUM RESMI QUEUE

BAB III STACK ATAU TUMPUKAN

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Algoritma dan Struktur Data. Pertemuan 7 Linked List

(3) BAHAN KAJIAN (materi ajar)

LAPORAN PRAKTIKUM IX. Oleh:

KUM 5 IMPLEMENTASI QUEUE

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

Array. Array mempunyai dimensi : 1. Array Dimensi Satu (Vektor) 2. Array Dimensi Banyak. - Dimensi Dua (Matriks/Tabel) - Dimensi Tiga (Kubik).

SENARAI BERANTAI (LINK LIST)

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

MODUL PRAKTIKUM STRUKTUR DATA

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

STRUKTUR DATA Pertemuan 6

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Transkripsi:

Stack Stack adalah struktur data yang memiliki sifat last in first out. Struktur dari stack yang dapat kita lihat sehari-hari adalah : tumpukan (lihat gambar 1.1) Gambar 1.1 Stack Terdapat 2 (dua) operasi yang dapat dikerjakan dalam stack : push dan pop (lihat gambar 2.2). Push adalah operasi menambahkan data ke tumpukkan, sedangkan pop adalah operasi mengambil data yang menempati posisi teratas dari stack. Gambar 2.2a Operasi Push Pada Stack

Gambar 2.2b Operasi Pop Pada Stack Gambar 2.2c Operasi Push dan Pop Pada Stack

Gambar 2.2d Contoh Lengkap Operasi Stack

Stack bisa dipakai untuk aplikasi delimiter check. Contoh delimiter {, [, (, ), ], }. Setiap pembuka delimiter harus mempunyai delimiter penutup. Contoh : a{bc[d]e}f(g) a{bc[d}e]f(g) BENAR SALAH Implementasi Stack Menggunakan Array Diandaikan jumlah tumpukan stack tidak akan melebihi K. Maka berikut ini adalah langkah-langkah implementasi stack menggunakan Array : 1. Buat array dengan nama S (array 1 dimensi) yang memiliki ukuran K S[K] 2. bagian top dari stack dinamakan h, diberi nilai awal = 0 3. Misal terjadi operasi push(x) : menambahkan elemen x ke dalam stack. maka terdapat dua proses yang terjadi : (3.1) S[h]=x (3.2) h++ 4. Jika terjadi operasi pop() : mengambil data teratas dari stack, maka terdapat dua proses yang terjadi : (4.1) h-- (4.2) return S[h] 5. Top() : melihat data teratas dari stack, maka proses yang terjadi : (5.1) return S[h-1] 6. Empty() : Mengecek apakah stack dalam kondisi kosong? (6.1) return (h==0) Setiap kali terjadi operasi, harus dilakukan pengujian terhadap batas dari array. Terdapat 2 (dua) kondisi yang terjadi : 1. Jika memasukkan data ke stack yang telah penuh, saat h=k maka terjadi Overflow 2. Jika mengambil data dari stack yang kosong, saat h<0 maka terjadi Underflow Penentuan Ukuran Stack Ukuran dari stack perlu diperhatikan. Ukuran yang ideal disesuaikan dengan kebutuhan pemakaian karena Jika ukuran stack yang disediakan sangat besar dibandingkan dengan stack yang terpakai maka terjadi kondisi wasting space (pemborosan tempat penyimpanan). Sedangkan jika ukuran stack yang disediakan lebih sedikit dibandingkan dengan yang dibutuhkan maka akan terjadi masalah kekurangan tempat penyimpanan.

Implementasi Stack Menggunakan Alokasi Memori Dinamis dan Pointer Ide dasar dari implementasi ini adalah mengalokasikan memori saat dibutuhkan. Ada beberapa hal yang perlu diperhatikan berkaitan dengan implementasi ini : 1. penunjuk (pointer) akan menunjuk ke data pertama. 2. Setiap data dalam stack disimpan dalam node 3. Setiap node memiliki 2 (dua) informasi penting yaitu data dan berikut 4. Pada saat awal, berikan nilai NULL yang berarti belum ada data di dalam stack 5. Pada saat operasi pengecekan kosong atau tidaknya sebuah stack, maka perintah yang diberikan adalah : return ( == NULL) 6. Pada saat operasi memperoleh nilai teratas dari stac, maka perintah yang diberikan adalah : jika (stack tidak kosong) maka kembalikan data pada posisi teratas di dalam potongan bahasa C/C++, pernyataan di atas dituliskan sebagai berikut : if (!empty()) { return (.data) } Fungsi Push Pada Stack Menggunakan Pointer void push(int x) { //buat node baru T = new struct_dari_node T.data = x T.berikut = = T } Fungsi Pop Pada Stack Menggunakan Pointer tipe_dari_data pop() { if(empty()) { return NULL } X =.data

} T = =.berikut delete T return X Notasi Polish dan Stack Berikut ini adalah contoh mengubah bentuk infix menjadi postfix : Gambar 2.3 Mengubah Infix ke Postfix

Dari Bentuk Postfix bisa dicari nilai dari sebuah pernyataan matematika, contoh : Antrian Gambar 2.5 Menghitung Nilai Pernyataan Matematika Antrian adalah struktur data yang memiliki sifat first in first out. Di dalam struktur data ini terdapat informasi / front dan / rear, karena informasi dan bersifat flexible, maka umumnya implementasi dari antrian menggunakan jika menggunakan list maka akan dijelaskan menggunakan konsep double link list. Pada penjelasan berikut ini, dipaparkan implementasi antrian menggunakan Array. Gambaran dari antrian ditunjukkan pada gambar 2.6 Gambar 2.6 Contoh Antrian

Gambar 2.7 menunjukan contoh pengambahan data, proses Enqueue, ke dalam antrian. Gambar 2.7 Proses Enqueue Gambar 2.8 menunjukan contoh mengurangi data, proses dequeue, dari antrian Gambar 2.8 Proses Dequeue Operasi Pada Antrian Pada antrian terdapat beberapa operasi dasar yaitu : (1)empty : mengecek kosong tidaknya sebuah antrian (2)full : mengecek penuh tidaknya sebuah antrian (3)enqueue : menambahkan data ke dalam antrian (4)dequeue : mengambil data dari antrian Proses enqueue merupakan proses penulisan, proses write sedangkan proses dequeue merupakan proses pembacaan, proses read. kedua proses ini diharapkan bisa berjalan secara asynchronous.

Berikut ini adalah algoritma dari proses write : Selama terdapat data yang akan ditulis maka : jika (full) maka tunggu sebentar jika tidak enqueue(x) Berikut ini adalah algoritma dari proses read : Jika (empty) maka tunggu sebentar jika tidak maka x = dequeue() Implementasi dari Antrian Menggunakan Array Terdapat beberapa hal penting berkaitan dengan implementasi antrian menggunakan array : 1. Asumsi array yang digunakan berukuran K. 2. Ada dua penunjuk yang diperhatikan : dan K Gambar 2.9 Implementasi Antrian Dengan Array Kondisi Saat Antrian Kosong = 0 = 0 Gambar 2.10 Antrian Kosong

Kondisi Saat Terjadi Penambahan Data X Data X akan ditambahkan pada posisi setelah itu akan digeser X Gambar 2.11 Penambahan Data X Kondisi Saat Terjadi Pengambilan Data Dari Antrian Terdapat dua proses yang terjadi : Ambil data pada posisi X Y Z W perbaharui posisi X Y Z W

Kondisi Saat Menambahkan Data dan Tail Berada Pada Posisi Terakhir X Y Z = (+1) % K Y Z X Kondisi Saat Mengambil Data dan Head Berada Pada Posisi Terakhir Y Z X = (+1) % K

Y Z X Mendeteksi Kondisi Kosong dan Penuh Dari Antrian Kondisi Kosong dan Penuh dari antrian akan tercapai jika ==. Jadi Pertanyaannya adalah bagaimana mengetahui kondisi saat ini penuh atau kosong? Teknik yang bisa ditempuh adalah sebagai berikut : Membuat sebuah variabel (misal num) sebagai indikator penuh atau kosong. Ketika terjadi proses enqueue, num = num + 1 Ketika terjadi proses dequeue, num = num 1 Dengan cara yang demikian maka untuk mendeteksi penuh / kosong dilakukan sebagai berikut : kosong? penuh? == DAN num==0 == DAN num==k Implementasi Antrian Menggunakan Double Link List Konsep dari double link list adalah setiap data akan saling kait mengkait satu dengan yang lainnya. Dalam double link list terdapat juga dua penunjuk penting dan. Gambaran dari double link list dapat dilihat pada gambar barikut : sebelumn ya data berikut X Y Z Head Tail

Berikut ini adalah implementasi beberapa fungsi penting dalam antrian menggunakan double link list : (1)new =NULL = NULL (2)empty return (==NULL) (3)enqueue(x) buat node baru, misal T T.data = x T.sebelumnya =.berikut = T = T T.berikutnya = NULL (4)dequeue() if (==NULL) { error (underflow) } X =.data temp = =.berikut delete temp return (X)