Stack
-
Upload
wahyu-andi-saputro -
Category
Documents
-
view
29 -
download
2
description
Transcript of 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++; } }
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:
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) {
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
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:
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