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

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

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

Algoritma Pemrograman & Struktur Data

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

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

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Algoritma dan Struktur Data STACK

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

Penambahan Simpul (Node)

BAB III METODE PENELITIAN / PERANCANGAN SISTEM. perancangan dan pembuatan program ini meliputi : dengan konversi notasi infix, prefix, dan postfix.

ARNA FARIZA YULIANA SETIOWATI

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

BAB II STACK (TUMPUKAN)

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

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

Algoritma dan Struktur Data. Ramos Somya

ALGORITMA DAN STRUKTUR DATA

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

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

S TA C K Sunu Wibirama

Binary Search Tree (BST)

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Dinamik Linked List. hari bulan tahun

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Praktikum 4. Tumpukan (Stack)

Algoritma dan Struktur Data

A. TUJUAN PEMBELAJARAN

4. STACK / TUMPUKAN TEORI PENUNJANG

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Stack. Gambar 1.1 Stack

BAB IX LINKED LIST (SENARAI BERANTAI)

Single Linked List (1)

SENARAI BERANTAI (LINK LIST)

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

04. Single Linked List

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

ALGORITMA DAN STRUKTUR DATA

05. Double Linked List

BAB II STACK Atau TUMPUKAN

SINGLE LINKED LIST (NON CIRCULAR)

Struktur Data Array. Rijal Fadilah S.Si

KONSEP POINTER DAN LINKED LIST

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

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

BAB 3 STACK (TUMPUKAN)

LAPORAN PRAKTIKUM RESMI QUEUE

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

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

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Review : Sifat Implementasi Linear List dengan Array

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

BAB III STACK ATAU TUMPUKAN

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

Pertemuan 7. REVIEW dan QUIS

Struktur Data II. Single Linked List - Non circular

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

MODUL 6 SINGLE & DOUBLE LINKED LIST

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

Praktikum Algoritma dan Struktur Data

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

KONSEP POINTER DAN LINKED LIST

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

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

A. TUJUAN PEMBELAJARAN

BAB IV Antrian(Queue)

STRUKTUR DATA Pertemuan 1 s.d 8

STRUKTUR DATA (2) Single Linked List

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2017

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

Array VS Linked List

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

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

LAPORAN PRAKTIKUM IX. Oleh:

LIST. Dewi Sartika, M.Kom

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

RENCANA PEMBELAJARAN

BAB VII STACK ( TUMPUKAN)

Tipe Data. Pendahuluan. Objektif. Bahan Bacaan

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Struktur Data. Stack STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

Algoritma Dan Struktur Data II

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

BAB IX LINKED LIST (SENARAI BERANTAI)

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

STRUKTUR DATA single linked list non circular

A. TUJUAN PEMBELAJARAN

A. TUJUAN PEMBELAJARAN

INFIX, PREFIX DAN POSTFIX

Modul Praktikum Algoritma dan Struktur Data

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Gambar 1. Ilustrasi Stack

Transkripsi:

Stack Sekilas Tentang Stack Stack dapat diimplementasikan dengan menggunakan konsep Linked List. Bentuk dari struct dari head untuk stack dapat digambarkan sebagai berikut: Pointer ke node pertama dari stack Mencatat jumlah node yang ada Perbedaan mendasar antara stack dan Linked List adalah bahwa stack memiliki operasi khusus untuk memanipulasi elemen tersebut. Operasi yang dimaksud dalam program C dapat diimplementasikan menjadi function. Operasi yang dimaksud adalah: push() : menambah elemen stack yang baru dibagian atas stack. pop() : menghapus elemen dari stack yang berada dibagian paling atas. get() : membaca nilai elemen dari stack yang berada dibagian paling atas. isempty() : memeriksa apakah stack kosong atau tidak. Kegunaan Stack Stack biasa digunakan dalam mengontrol operasi dalam sebuah sistem operasi. Selain itu stack juga merupakan algoritma yang baik yang dapat digunakan untuk membuat phaser (membaca urutan operasi dari sebuah persamaan matematika). Implementasi Stack Untuk Integer typedef struct stacknode StackNodePtr; typedef struct stacknode { int elemen; StackNodePtr next; StackNode; typedef struct stack { StackNodePtr unsigned size; Stack; top; Bagian Deklarasi Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.h Struktur Data

Function-function dibawah ini kita asumsikan disimpan.c #include "stack.h" #include <stdio.h> int main(void) { Stack st; makestack(&st); push(&st, 2); push(&st, 4); push(&st, 3); while (!emptystack(&st)) { printf("%d\n", get(&st)); pop(&st); freestack(&st); return EXIT_SUCCESS; int makestack(stack ps) { ps->top = NULL; ps->size = 0; return ; / sukses / int emptystack(stack ps) { return ps->top == NULL int push(stack ps, int elemen) { StackNodePtr new; new = malloc(sizeof(stacknode)); if(new==null) return 0; / alokasi memori gagal / new->elemen = elemen; new->next = ps->top; ps->top = new; ps->size++; return / sukses / int pop(stack ps) { StackNodePtr temp; if(ps->top == NULL) return 0; / stack kosong / temp = ps->top; ps->top = ps->top->next; free(temp); ps->size--; return ; / sukses / int get(stack ps) { return ps->top->elemen; Struktur Data 2

Aplikasi Stack Salah satu aplikasi stack adalah dalam mengevaluasi dan menghitung ekspresi aritmatik. Sebagai contoh, bila kita ingin mencari nilai dari suatu ekspresi aritmatik sederhana yang melibatkan perkalian, penjumlahan, pengurangan dan pembagian. Eksepresi aritmatik berikut ini dikenal dengan susunan ekspresi infix: ( ( ( 3-2 ) ( 4 + 0 ) ) / 7 ) membutuhkan penyimpanan hasil sebagian perhitungan. Misalnya, jika bagian 3-2 pada ekspresi di atas dihitung, maka kita harus menyimpan hasil pengurangan itu yaitu terlebih dahulu, dan kemudian menghitung ekspresi 4 + -. Dalam hal ini stack sangat ideal untuk digunakan. Sebelum kita menyelesaikan permasalahan di atas, mari kita coba menyederhanakan ekspresi infix di atas menjadi dalam susunan ekspresi postfix. Ekspresi postfix adalah ekspresi yang menempatkan operator setelah kedua operannya. Berikut ilustrasi dari ekspresi infix 4 + 0 yang diubah menjadi ekspresi postfix. operator 4 + 0 operan Diubah dalam ekspresi postfix menjadi sebagai berikut: operator yang ditempatkan setelah kedua operan 4 0 + operan Struktur Data 3

Oleh karena itu ekspresi aritmatik ( ( ( 3-2 ) ( 4 + 0 ) ) / 7 ) dapat diubah menjadi ekspresi postfix sebagai berikut: 3 2-4 0 + 7 / Algoritma Mengubah Ekspresi Infix menjadi Postfix Proses konversi ekspresi infix menjadi bentuk postfix selalu dimulai dari sebelah kiri ekspresi aritmatik.. Jika yang ditemukan adalah operan, maka cetak atau simpan 2. Jika yang ditemukan adalah kurung buka maka abaikan. 3. Jika yang ditemukan adalah operator maka push ke. 4. Jika yang ditemukan adalah kurung tutup maka pop stack, kemudian cetak atau simpan nilainya. 5. Jika ekspresi telah diperiksa semua tetapi ternyata stack belum kosong, pop semua data dan cetak atau simpan nilai yang di pop. Perhatikan contoh berikut. Diketahui ekspresi infix berikut ini: ( ( ( 3-2 ) ( 4 + 0 ) ) / 7 ) Dimulai dari sebelah kiri, maka yang kita temukan pertama sekali adalah nilai (operan) maka aturan nomor harus dijalankan, yaitu nilai tersebut langsung dicetak. Dalam contoh ini kita tidak menyimpan hasil konversi melainkan langsung mencetaknya ke layar monitor. Stack kosong Proses kita lanjutkan, dan kita menemukan operator maka aturan ke 3 harus dikerjakan, yaitu push operator tersebut ke. push operator ke Kemudian kurung buka ( ditemukan, maka aturan nomor 2 dikerjakan yaitu abaikan tanda kurung buka tersebut. Pengabaian tanda kurung ini kita lakukan 3 kali karena kita menemukan 3 buah tanda kurung buka. Struktur Data 4

Selanjutnya kita temukan bilangan 3 (operan) maka aturan nomor harus dikerjakan yaitu mencetak bilangan 3 tersebut ke layar. 3 stack tidak berubah Proses kita lanjutkan, dan kita menemukan operator - maka aturan ke 3 harus dikerjakan, yaitu push operator tersebut ke. 3 - - push operator ke Selanjutnya kita temukan bilangan 2 (operan) maka aturan nomor harus dikerjakan yaitu mencetak bilangan 2 tersebut ke layar. 3 2 - stack tidak berubah Kemudian tanda kurung tutup ) kita temukan sehingga aturan ke 4 harus dikerjakan yaitu pop stack dan cetak data paling atas stack ke layar. 3 2 - stack setelah di pop Proses kita lanjutkan, dan kita menemukan operator maka aturan ke 3 harus dikerjakan, yaitu push operator tersebut ke. 3 2 - push operator ke Struktur Data 5

Kemudian kurung buka ( ditemukan, sehingga abaikan saja. Selanjutnya kita temukan bilangan 4 (operan) maka aturan nomor harus dikerjakan yaitu mencetak bilangan 4 tersebut ke layar. 3 2-4 stack tidak berubah Proses kita lanjutkan, dan kita menemukan operator + maka aturan ke 3 harus dikerjakan, yaitu push operator tersebut ke. 3 2-4 + push operator ke Selanjutnya kita temukan bilangan 0 (operan) maka aturan nomor harus dikerjakan yaitu mencetak bilangan 0 tersebut ke layar. 3 2-4 0 + stack tidak berubah Kemudian tanda kurung tutup ) kita temukan sehingga aturan ke 4 harus dikerjakan yaitu pop stack dan cetak data paling atas stack ke layar. 3 2-4 0 + stack setelah di pop Sekali lagi tanda kurung tutup ) kita temukan sehingga aturan ke 4 dikerjakan. 3 2-4 0 + stack setelah di pop Struktur Data 6

Proses kita lanjutkan, dan kita menemukan operator / maka aturan ke 3 harus dikerjakan, yaitu push operator tersebut ke. 3 2-4 0 + / push operator ke Kemudian kita temukan bilangan 7 (operan) maka aturan nomor harus dikerjakan yaitu mencetak bilangan 7 tersebut ke layar. 3 2-4 0 + 7 / stack tidak berubah Kemudian tanda kurung tutup ) kita temukan sehingga aturan ke 4 harus dikerjakan yaitu pop stack dan cetak data paling atas stack ke layar. 3 2-4 0 + 7 / stack setelah di pop Karena ekspresi sudah diperiksa semua sementara stack masih belum kosong maka aturan ke 5 harus di kerjakan yaitu pop semua data dan cetak ke layar. 3 2-4 0 + 7 / stack kosong Akhirnya ekspresi postfix kita peroleh yaitu: 3 2-4 0 + 7 / Struktur Data 7

Algoritma Menghitung Nilai Ekspresi Postfix Setelah ekspresi postfix kita peroleh, maka beberapa langkah selanjutnya perlu juga dikerjakan untuk menghitung nilai dari ekspresi aritmatik tersebut. Ingat, bahwa sebelum menghitung nilai dari suatu ekspresi aritmatik maka ekspresi infix harus diubah terlebih dahulu menjadi bentuk ekspresi postfix. Berikut algoritma untuk menghitung nilai ekspresi postfix:. Jika yang ditemukan adalah operan, maka push operan tersebut ke. 2. Jika yang ditemukan adalah operator, pop stack dua kali dan hitung menggunakan nilai yang di pop dan operator yang dijumpai. Hasil perhitungan ini kemudian di push kembali ke. 3. Jika ekspresi telah diperiksa semua maka nilai yang di pop terakhir dari stack adalah jawaban dari ekspresi aritmatik tersebut. Perhatikan contoh berikut. Jika telah diperoleh ekspresi postfix berikut ini: 3 2-4 0 + 7 / Dimulai dari sebelah kiri, maka yang kita temukan pertama sekali adalah nilai (operan) maka aturan nomor harus dijalankan, yaitu push nilai tersebut ke dalam stack. Kemudian kita temukan kembali operan dengan nilai 3, maka aturan nomor harus dikerjakan lagi, yaitu push nilai tersebut ke. 3 Selanjutnya ditemukan kembali operan dengan nilai 2, maka aturan nomor harus dikerjakan lagi, yaitu push nilai tersebut ke. 2 3 Struktur Data 8

Proses kita lanjutkan lagi, dan sekarang kita temukan operator oleh karena itu aturan nomor 2 harus dikerjakan. 3-2 pop stack dua kali push kembali ke Note: Urutan perhitungan harus 3 2 bukan 2 3 atau data yang kedua yang di pop di kurang data yang pertama sekali di pop dari stack. Kemudian ditemukan kembali operan dengan nilai 4, maka aturan nomor harus dikerjakan lagi, yaitu push nilai tersebut ke. 4 Selanjutnya ditemukan operan dengan nilai 0, maka kembali aturan nomor dikerjakan lagi, yaitu push nilai tersebut ke. 0 4 Proses kita lanjutkan lagi, dan sekarang kita temukan operator + oleh karena itu aturan nomor 2 harus dikerjakan. Struktur Data 9

4 + 0 pop stack dua kali 4 4 push kembali ke Kemudian kita temukan lagi operator oleh karena itu aturan nomor 2 dikerjakan. 4 pop stack dua kali 4 4 push kembali ke Selanjutnya ditemukan kembali operan dengan nilai 7, maka aturan nomor harus dikerjakan lagi, yaitu push nilai tersebut ke. 7 4 Struktur Data 0

Proses kita lanjutkan lagi, dan sekarang kita temukan operator / oleh karena itu aturan nomor 2 harus dikerjakan. 4 / 7 pop stack dua kali 2 2 push kembali ke Kemudian kita temukan operator oleh karena itu aturan nomor 2 dikerjakan lagi. 2 pop stack dua kali 30 push kembali ke 30 Karena ekspresi postfix telah diperiksa semua dan bila data di pop maka nilai 30 diperoleh, maka dapat disimpulkan bahwa ekspresi infix: ( ( ( 3-2 ) ( 4 + 0 ) ) / 7 ) = 30 Struktur Data