BAB III. Stack. ( Tumpukan )

dokumen-dokumen yang mirip
Algoritma dan Struktur Data. Ramos Somya

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Stack using Array. Alfa Faridh Suni, S.T., M.T. PTIK

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

# NINE Queue dengan Array

LAPORAN PRAKTIKUM IV. Oleh :

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

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

Algoritma Dan Struktur Data II

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Praktikum 4. Tumpukan (Stack)

A. TUJUAN PEMBELAJARAN

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

Materi 8 : STACK (TUMPUKAN) Dosen:

Algoritma Pemrograman & Struktur Data

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

S TA C K Sunu Wibirama

Modul Praktikum Algoritma dan Struktur Data

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

MODUL IV STACK A. TUJUAN

Struktur Data Array. Rijal Fadilah S.Si

Seharusnya. if (antrian.tail==max-1) return 0;

# EIGHT ADT (Abstract Data Type) dan Stack Array

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

Struct Lanjutan: Studi Kasus

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

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

LAPORAN PRAKTIKUM IV. Oleh:

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

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

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

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

Praktikum Algoritma dan Struktur Data

STRUKTUR DATA Pertemuan 1 s.d 8

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

IT234 - Algoritma dan Struktur Data. Ramos Somya

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

BAB 3 STACK (TUMPUKAN)

IT234 - Algoritma dan Struktur Data. Ramos Somya

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PEMROGRAMAN 2. Queue (Antrian)

Praktikum 5 PERULANGAN PROSES

Algoritma Dan Struktur Data II. Queue

Pendahuluan Struktur Data. Nisa ul Hafidhoh

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Algoritma Dan Struktur Data II

Praktikum 4 PENGULANGAN PROSES

LAPORAN PRAKTIKUM RESMI QUEUE

Algoritma Pemrograman. Fery Updi,M.Kom

BAB IV PENGULANGAN PROSES

ARNA FARIZA YULIANA SETIOWATI

Algoritma dan Struktur Data. Ramos Somya

1. Kompetensi Mengenal dan memahami struktur data Stack (tumpukan) dan Queue (antrian).

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

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

A. TUJUAN PEMBELAJARAN

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Gambar 1. Ilustrasi Stack

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

BAB II STACK (TUMPUKAN)

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

KONSEP POINTER DAN LINKED LIST

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

// Created by Andri Andriyan // Linked List. #include <stdlib.h> #include <conio2.h> #include <stdio.h>

PRAKTIKUM 07 DECISION SWITCH DWI SETIYA NINGSIH // PJJ D3 TI

Proses Perulangan (Looping) DASAR PROGRAMMING 1

Tipe Data dan Operator

Pertemuan 7. REVIEW dan QUIS

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

PRAKTIKUM 6 PENGULANGAN PROSES 2

04. Single Linked List

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

BAB VIII QUEUE (ANTRIAN)

KONSEP POINTER DAN LINKED LIST

ALGORITMA DAN STRUKTUR DATA

Single Linked List (1)

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

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

STRUKTUR DATA Pertemuan 4

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

P 4 Bab 3 : Dasar Pemrograman C

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

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

Algoritma dan Struktur Data STACK

BAB I. LARIK (ARRAY) Array (larik) ialah penampung sejumlah data sejenis (homogen) yang menggunakan satu identifier (pengenal).

Konsep Pemrograman. Bab 10. String. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

KONSEP POINTER DAN LINKED LIST

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

KONSEP POINTER DAN LINKED LIST

PROJECT UJIAN AKHIR SEMESTER MATA KULIAH STRUKTUR DATA Program Kalkulator Scientific Sederhana

BAB VII STACK ( TUMPUKAN)

KONSEP POINTER DAN LINKED LIST

Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN

BAB III PERINTAH INPUT OUTPUT

Transkripsi:

BAB III Stack ( Tumpukan ) Pada algoritma dan pemrograman terutama struktur data kita akan mengenal suatu konsep penyusunan data/array/elemen struktur dengan cara penumpukan atau yang biasa disebut dengan stack. Apa sih yang dimaksud dengan stack/tumpukan ini? Contoh nyatanya bisa kita lihat di kehidupan sehari-hari misalnya tumpukan piring. Seorang ibu rumah tangga yang akan mencuci piring meletakkan sebuah piring kemudian disusul dengan menumpuk piring yang ke 2 diatas piring pertama dan seterusnya hingga piring ke 5. Ketika piring akan diambil untuk dicuci maka tentu saja yang pertama kali diambil adalah piring yang ke 5 atau tumpukan teratas. Stack merupakan kumpulan data yang seolah-olah ada data yang diletakan diatas data lain, dimana dapat disisipkan/ditambah dan diambil/dihapus melalui ujung yang sama yang biasa disebut top of stack. Dan stack memiliki sifat LIFO ( Last In First Out) yaitu terakhir masuk adalah yang pertama keluar, atau data yang pertama masuk adalah yang terakhir keluar. ilustrasi stack : Akuntansi Sistem Informasi Akuntansi Sistem Informasi Teknik informatika Teknik informatika Teknik informatika Siti yuliyanti Page 1

Karena kita menumpuk akuntansi paling akhir, maka akuntansi menjadi elemen paling atas dan sebaliknya teknik informatika akan menjadi elemen terakhir. Berikut ini adalah operator atau nama method yang biasa digunakan dalam algoritma stack. - PUSH : penyisipan (Memasukkan elemen). - POP : penghapusan (Mengeluarkan elemen puncak). - IsEmpty : operator yang memeriksa apakah stack kosong. - IsFull : operator yang memeriksa apakah stack penuh. - Clear : operator untuk menghapus stack. Contoh simulasi dalam program Siti yuliyanti Page 2

Berikut ini adalah contoh program simulasi single stack menggunakan bahasa C ##include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define STACK_MAX 10 //mendefinisikan isi tumpukan sebanyak 10 tumpukan #define STACK_LEN 21 //mendefinisikan panjang string sebanyak 21 karakter /*membuat struct untuk tumpukan*/ struct STACK int top; char index[stack_max][stack_len]; stack; /*prosedur pemberian nilai awal pada top (inisialisasi)*/ void init() stack.top= -1; /*fungsi untuk memeriksa apakah tumpukan penuh atau tidak*/ int IsFull() if(stack.top == STACK_MAX-1) return 1; /*fungsi untuk memeriksa apakah tumpukan kosong atau tidak*/ int IsEmpty() if(stack.top== -1) return 1; /*fungsi untuk menghitung panjang string*/ int CountString(char *e) int count; count=strspn(e,e); if(count<stack_len) return 1; /*prosedur operator Push pada stack. meletakkan elemen baru pada posisi atas tumpukan */ void Push(char *d) stack.top++; strcpy(stack.index[stack.top],d); Siti yuliyanti Page 3

/*prosedur operator Pop pada stack. mengeluarkan eleman paling atas pada tumpukan*/ void Pop() stack.top--; /*prosedur untuk menampilkan elemen stack*/ void ViewStack() int i; if(!isempty()) for(i=stack.top;i>=0;i--) printf("elemen array[%d]= %s\n",i,stack.index[i]); printf("-null-\n\n"); /*prosedur untuk menampilkan elemen TOP dan NOEL pada stack*/ void ViewTopNoel() int j,h; if(!isempty()) j=stack.top; h=j; h++; printf("elemen Puncak [TOP(s)] : %s\n",stack.index[j]); printf("jumlah Elemen [NOEL(s)] : %d\n",h); printf("-null-\n\n"); /*prosedur untuk menghapus stack dengan mengeluarkan semua elemen melalui looping prosedur pop*/ void ClearStack() while(!isempty()) Pop(); /*Interface dan Main Function*/ main() int op,count,multi; char elemen[stack_len]; printf("\t===============================\n"); printf("\t PROGRAM STACK printf("\t yuanthy (1017078801) printf("\t===============================\n"); printf("\t Press Any Key To Continue.. \n"); Siti yuliyanti Page 4

getche(); init(); do menu: system("cls"); printf("\nisi STACK SAAT INI:\n\n"); ViewStack(); printf("\nstatus ELEMEN STACK:\n\n"); ViewTopNoel(); printf(" ==Menu & Operasi Program Stack: == \n"); printf(" 1. Operasi PUSH printf(" 2. Operasi POP printf(" 3. Hapus Stack printf(" 4. Exit printf("=====================================\n"); printf("pilih Menu/Operasi [1-4]: "); scanf("%d",&op); fflush(stdin); switch(op) case 1: if(isfull()) printf("\nstack Sudah Penuh!"); printf("\ninput Data(Max 20 Karakter): "); gets(elemen); if(countstring(elemen)) Push(elemen); printf("\nstring Terlalu Panjang"); goto menu; break; case 2: if(isempty()) printf("\nstack Dalam Keadaan Kosong!!"); Pop(); break; case 3: if(isempty()) printf("\nstack Dalam Keadaan Kosong!!"); ClearStack(); break; case 4: goto exit; default: printf("menu untuk nomor %d tidak tersedia!", op); while(op!=6); exit: getche(); Siti yuliyanti Page 5

Berikut ini adalah contoh program simulasi multi stack menggunakan bahasa C #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define STACK_MAX 10 //mendefinisikan isi tumpukan sebanyak 10 tumpukan #define STACK_LEN 21 //mendefinisikan panjang string sebanyak 21 karakter /*membuat struct untuk tumpukan*/ struct STACK int top_elm; char index[stack_max][stack_len]; stack; /*prosedur pemberian nilai awal pada top (inisialisasi)*/ void init() stack.top_elm = -1; /*fungsi untuk memeriksa apakah tumpukan penuh atau tidak*/ int IsFull() if(stack.top_elm == STACK_MAX-1) return 1; /*fungsi untuk memeriksa apakah tumpukan kosong atau tidak*/ int IsEmpty() if(stack.top_elm == -1) return 1; /*fungsi untuk menghitung panjang string*/ int CountString(char *e) int count; count=strspn(e,e); if(count<stack_len) return 1; /*prosedur operator Push pada stack. meletakkan elemen baru pada posisi atas tumpukan */ void Push(char *d) stack.top_elm++; strcpy(stack.index[stack.top_elm],d); Siti yuliyanti Page 6

/*prosedur operator Pop pada stack. mengeluarkan eleman paling atas pada tumpukan*/ void Pop() stack.top_elm--; /*prosedur operator Pop pada stack mengeluarkan sebanyak n elemen teratas pada tumpukan*/ void MultiPop(int n) if(n<=stack.top_elm+1) for(int i=0;i<n;i++) stack.top_elm--; printf("\n%d Melebihi Jumlah Tumpukan Yang Ada!",n); /*prosedur operator Push pada stack menumpuk sebanyak multi elemen*/ void MultiPush() int multi; char elemen[stack_len]; printf("\njumlah Data Input:");scanf("%d",&multi); if((multi+stack.top_elm)<stack_max) for(int n=1;n<=multi;n++) fflush(stdin); printf("masukkan Data %d (Maks 20 Karakter): ",n);gets(elemen); if(countstring(elemen)) Push(elemen); printf("string Pada Data ke %d Terlalu Panjang",n); printf("stack Maksimal=>10 Tumpukan s/d Array[9]"); Siti yuliyanti Page 7

/*prosedur untuk menampilkan elemen stack*/ void ViewStack() int i; if(!isempty()) for(i=stack.top_elm;i>=0;i--) printf("elemen array[%d]= %s\n",i,stack.index[i]); printf("-null-\n\n"); /*prosedur untuk menampilkan elemen TOP dan NOEL pada stack*/ void ViewTopNoel() int j,h; if(!isempty()) j=stack.top_elm; h=j; h++; printf("elemen Puncak [TOP(s)] : %s\n",stack.index[j]); printf("jumlah Elemen [NOEL(s)] : %d\n",h); printf("-null-\n\n"); putchar('\n'); /*prosedur untuk menghapus stack dengan mengeluarkan semua elemen melalui looping prosedur pop*/ void ClearStack() while(!isempty()) Pop(); /*Interface dan Main Function*/ int main() int op,count,multi; char elemen[stack_len]; printf("\t ========================================== \n"); printf("\t PROGRAM STACK printf("\t Press Any Key To Continue printf("\t ========================================== \n"); printf("\t "); Siti yuliyanti Page 8

init(); do menu: system("cls"); printf("\nisi STACK SAAT INI:\n\n"); ViewStack(); printf("\nstatus ELEMEN STACK:\n\n"); ViewTopNoel(); printf(" ==Menu & Operasi Program Stack: == \n"); printf(" 1. Operasi PUSH printf(" 2. Operasi MultiPUSH printf(" 3. Operasi POP printf(" 4. Operasi MultiPOP printf(" 5. Hapus Stack printf(" 6. Exit printf("=====================================\n"); printf("pilih Menu/Operasi [1-4]: "); scanf("%d",&op); fflush(stdin); switch(op) case 1: if(isfull()) printf("\nstack Sudah Penuh!"); printf("\ninput Data(Max 20 Karakter): "); gets(elemen); if(countstring(elemen)) Push(elemen); printf("\nstring Terlalu Panjang"); goto menu; break; case 2: if(isfull()) printf("\nstack Sudah Penuh!"); MultiPush(); break; Siti yuliyanti Page 9

case 3: if(isempty()) printf("\nstack Dalam Keadaan Kosong!!"); Pop(); break; case 4: if(isempty()) printf("\nstack Dalam Keadaan Kosong!!"); printf("\njumlah Elemen Teratas Yang Akan Dikeluarkan: "); scanf("%d",&multi); MultiPop(multi); break; case 5: if(isempty()) printf("\nstack Dalam Keadaan Kosong!!"); ClearStack(); break; case 6: goto exit; default: printf("menu untuk nomor %d tidak tersedia!", op); while(op!=6); exit: Latihan.: Ubahlah program stack diatas sehingga inputan yg dimasukan adalah nim dengan tipedata integer dan ukurannya 7 digit saja! Siti yuliyanti Page 10