stack

6
Bagian 4 Stack 1. Mamahami konsep stack 2. Memahami operasi dasar stack 3. Dapat mengaplikasikan stack dalam kasus nyata Penjelasan Bab ini membahas konsep stack dan operasi – operasi yang terlibat di dalamnya. Kemudian diteruskan dengan studi kasus pembuatan program sederhana yang mengaplikasikan konsep stack. Percobaan Stack dibuat menggunakan array dan sebuah variabel bertipe integer yang menunjukkan posisi puncak stack. Dalam stack terdapat beberapa fungsi untuk operasi dasar, yaitu push() dan pop(). Percobaan kali ini menerangkan stack dalam potongan – potongan kode program. Langkah pertama adalah membuat array untuk stack. Dalam kode ini menggunakan asumsi bahwa stack digunakan untuk tipe data integer saja. Kode 4.1 Deklarasi stack int stack[MAX]; // array stack int top; // penunjuk posisi atas stack Kemudian membuat fungsi push() untuk operasi memasukkan elemen baru ke dalam stack. Dalam fungsi ini terdapat pemeriksaan, bila nilai top sama dengan atau lebih dari MAX berarti stack sudah penuh. Kode 4.2 Fungsi push() void push(int e) { if(top >= MAX) { printf("Stack penuh\n"); } else { stack[top] = e; top++; } }

Upload: wahyu-andi-saputro

Post on 11-Dec-2014

29 views

Category:

Documents


2 download

DESCRIPTION

Stack

TRANSCRIPT

Page 1: Stack

Bagian 4

Stack

1. Mamahami konsep stack 2. Memahami operasi dasar stack 3. Dapat mengaplikasikan stack dalam kasus nyata

Penjelasan

Bab ini membahas konsep stack dan operasi – operasi yang terlibat di dalamnya. Kemudian

diteruskan dengan studi kasus pembuatan program sederhana yang mengaplikasikan konsep stack.

Percobaan

Stack dibuat menggunakan array dan sebuah variabel bertipe integer yang menunjukkan

posisi puncak stack. Dalam stack terdapat beberapa fungsi untuk operasi dasar, yaitu push() dan

pop(). Percobaan kali ini menerangkan stack dalam potongan – potongan kode program.

Langkah pertama adalah membuat array untuk stack. Dalam kode ini menggunakan asumsi

bahwa stack digunakan untuk tipe data integer saja.

Kode 4.1 Deklarasi stack

int stack[MAX]; // array stack int top; // penunjuk posisi atas stack

Kemudian membuat fungsi push() untuk operasi memasukkan elemen baru ke dalam stack.

Dalam fungsi ini terdapat pemeriksaan, bila nilai top sama dengan atau lebih dari MAX berarti stack

sudah penuh.

Kode 4.2 Fungsi push()

void push(int e) { if(top >= MAX) { printf("Stack penuh\n"); } else { stack[top] = e; top++; } }

Page 2: Stack

Stack

16 | P a g e

Fungsi yang kedua adalah pop() yang digunakan untuk operasi mengeluarkan isi stack. Fungsi

akan mengembalikan nilai stack paling atas. Dalam fungsi ini juga terdapat pemeriksaan bila nilai top

sama dengan atau kurang dari 0 berarti stack kosong.

Kode 4.3 Fungsi pop()

int pop(void) { if(top <= 0) { printf("Stack kosong\n"); return 0; } else { top--; return stack[top]; } }

Selain dua fungsi di atas bisa pula ditambahkan dengan fungsi show() untuk menampilkan isi

stack dan fungsi menu() untuk menampilkan daftar menu pilihan.

Berikut ini adalah kode lengkap dari program untuk mendemokan stack dan operasi – operasinya.

Kode 4.4 program Demo Stack

/* * program stack.c * demo operasi stack * * Bayu Setiaji 2010 * */ #include <stdio.h> #define MAX 20 int stack[MAX]; // array stack int top; // penunjuk posisi atas stack void push(int e); int pop(void); void show(void); int menu(void); int main(void) { int e; int m; top = 0; // inisialisasi stack do { m = menu(); switch(m) { case 1:

Page 3: Stack

Stack

17 | P a g e

printf("PUSH "); scanf("%d", &e); push(e); break; case 2: printf("POP %d\n", pop()); break; case 3: printf("Isi: "); show(); break; case 4: exit(0); } } while(m != 4); return 0; } /* * fungsi push * memasukkan elemen stack * */ void push(int e) { if(top >= MAX) { printf("Stack penuh\n"); } else { stack[top] = e; top++; } } /* * fungsi pop * mengeluarkan isi stack * */ int pop(void) { if(top <= 0) { printf("Stack kosong\n"); return 0; } else { top--; return stack[top]; } } /* * fungsi show * menampilkan isi stack * */ void show(void) { int i; if(top <= 0) {

Page 4: Stack

Stack

18 | P a g e

printf("Stack kosong\n"); } else { for(i = 0; i < top; i++) { printf("%d ", stack[i]); } printf("\n"); } } /* * fungsi menu * menampilkan menu pilihan * */ int menu(void) { int m; printf("Demo Stack\n"); printf("1. Push\n"); printf("2. Pop\n"); printf("3. Lihat\n"); printf("4. Keluar\n"); printf(": "); scanf("%d", &m); return m; }

Studi Kasus

Fungsi – fungsi dalam stack bisa diimplementasikan untuk banyak hal. Salah satunya adalah

program kalkulator postfix (ilustrasi terdapat di file slide.ppt) sederhana yang dapat melakukan

operasi aritmatik. Berikut ini adalah kode lengkapnya.

Kode 4.5 program kalkulator

/* * program calc.c * program kalkulator postfix sederhana 4 fungsi * mengimplementasikan stack * * Bayu Setiaji 2010 * */ #include <stdio.h> #include <stdlib.h> #define MAX 5 int stack[MAX]; // stack int top; // posisi puncak stack

Page 5: Stack

Stack

19 | P a g e

void push(int i); int pop(void); int main(void) { int a, b; char s[80]; top = 0; system("cls"); printf("Kalkulator Sederhana\n"); printf("Tekan 'q' untuk keluar\n\n"); do { printf(": "); gets(s); switch(*s) { case '+': b = pop(); a = pop(); printf("= %d\n", a + b); push(a + b); break; case '-': b = pop(); a = pop(); printf("= %d\n", a - b); push(a - b); break; case '*': b = pop(); a = pop(); printf("= %d\n", a * b); push(b * a); break; case '/': b = pop(); a = pop(); if(b == 0) { printf("! pembagian dengan nol\n"); break; } printf("= %d\n", a / b); push(a / b); break; case '.': a = stack[top - 1]; printf("= nilai akhir [ %d ]\n", a); break; default:

Page 6: Stack

Stack

20 | P a g e

push(atoi(s)); } } while(*s != 'q'); return 0; } void push(int i) { if(top >= MAX) { printf("! stack penuh\n"); return; } stack[top] = i; top++; } int pop(void) { top--; if(top < 0) { printf("! stack kosong\n"); return 0; } return stack[top]; }

Latihan

1. Dengan memanfaatkan operasi – operasi pada stack, buatlah program untuk membalik

susunan karakter dari string yang dimasukkan.

String : AMIKOM

Reverse: MOKIMA

2. Dengan memanfaatkan operasi – operasi pada stack buatlah program untuk konversi

bilangan desimal ke biner.

Desimal: 5

Biner : 101