Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Algoritma dan Struktur Data

Presentasi serupa


Presentasi berjudul: "Algoritma dan Struktur Data"— Transcript presentasi:

1 Algoritma dan Struktur Data
Praktikum 2 SKS Dosen: Muhammad Fachrie, M.Cs. Praktikum Alstrukdat - Pertemuan 2

2 Praktikum Alstrukdat - Pertemuan 2
STACK Stack (tumpukan) adalah salah satu metode pengorganisasian data di dalam sebuah program yang menggunakan pola LIFO (Last In, First Out) Artinya, data yang terakhir kali dimasukkan ke dalam program, akan dikeluarkan pertama kali. Ibarat sebuah tumpukan buku di dalam kardus, buku yang pertama kali bisa diambil adalah buku yang paling atas (yang paling pertama masuk), sedangkan buku yang terakhir kali bisa diambil adalah buku yang paling bawah (yang terakhir kali masuk) Praktikum Alstrukdat - Pertemuan 2

3 Ilustasi Stack – Input Data
Terakhir kali masuk, Pertama kali keluar N = batas maksimum tumpukan Buku N . Buku 4 Buku 3 Buku 2 Pertama kali masuk, Terakhir kali keluar Buku 1 Praktikum Alstrukdat - Pertemuan 2

4 Ilustasi Stack – Output Data
Terakhir kali masuk, Pertama kali keluar N = batas maksimum tumpukan Buku N . Buku 4 Buku 3 Buku 2 Pertama kali masuk, Terakhir kali keluar Buku 1 Praktikum Alstrukdat - Pertemuan 2

5 Ilustasi Stack dalam Array
Indeks array Buku 1 Buku 2 Buku 3 Buku 4 Buku N . Elemen ke-N N-1 . Elemen ke-4 3 Elemen ke-3 2 Elemen ke-2 1 Elemen ke-1 Praktikum Alstrukdat - Pertemuan 2

6 Praktikum Alstrukdat - Pertemuan 2
Stack – Proses Push Push di dalam stack adalah proses memasukkan sebuah data ke dalam stack. Data yang baru saja diinputkan akan berada pada bagian atas (top) stack. Setiap kali terjadi proses push (penambahan data ke dalam stack), maka nilai top akan bertambah 1 (top = top + 1). Variabel top berfungsi menunjukkan indeks dari elemen teratas, yakni elemen/nilai yang terakhir kali dimasukkan ke dalam stack. Praktikum Alstrukdat - Pertemuan 2

7 Stack – Ilustrasi Proses Push
4 3 2 1 4 3 2 1 80 4 3 2 100 1 80 Top Top Top Stack kosong Top = -1 Stack berisi 1 data Top = 0 Stack berisi 2 data Top = 1 Praktikum Alstrukdat - Pertemuan 2

8 Stack – Ilustrasi Proses Push
STACK PENUH! Inisialisasi stack Max Tumpukan = 5 Push(80) Push(100) Push(75) Push(92) Push(85) NULL 1 2 3 4 top = 4 85 92 top = 3 top = 2 75 100 top = 1 80 top = 0 top = -1 NULL = kondisi dimana memori pada elemen array masih kosong Praktikum Alstrukdat - Pertemuan 2

9 Praktikum Alstrukdat - Pertemuan 2
Stack – Proses Push Stack hanya bisa membaca data yang berada pada posisi paling atas (top). Contoh: Element[top] = 75 Element[top] = 85 4 3 75 2 100 1 80 Top 85 4 92 3 75 2 100 1 80 Top Praktikum Alstrukdat - Pertemuan 2

10 Praktikum Alstrukdat - Pertemuan 2
Stack – Proses Pop Pop di dalam stack merupakan sebuah proses untuk mengeluarkan sebuah data dari dalam stack. Satu kali proses pop hanya mengeluarkan satu buah data, yakni data yang berada pada posisi paling atas (top). Setiap terjadi proses pop (pengeluaran satu data dari dalam stack), maka nilai top berkurang 1 (top = top - 1). Praktikum Alstrukdat - Pertemuan 2

11 Stack – Ilustrasi Proses Pop
Top 85 4 92 3 75 2 100 1 80 4 92 3 75 2 100 1 80 4 3 75 2 100 1 80 Top Top Stack yang penuh Top = 4 Stack berisi 3 data Top = 3 Stack 2 data Top = 2 Praktikum Alstrukdat - Pertemuan 2

12 Stack – Ilustrasi Proses Pop
STACK KOSONG! Stack tidak kosong Pop() NULL 1 2 3 4 top = 4 85 92 top = 3 top = 2 75 100 top = 1 80 top = 0 top = -1 NULL = kondisi dimana memori pada elemen array masih kosong Praktikum Alstrukdat - Pertemuan 2

13 Kode Program – Inisialisasi Stack
Inisialiasi stack sebaiknya menggunakan record agar memudahkan programmer jika akan membuat lebih dari satu stack dalam satu program. Inisialisasi stack sebaiknya diletakkan di luar int main() (sebagai variabel global) agar dapat diakses oleh semua fungsi. //membuat record StackRecord struct StackRecord{ int top; int Element[MAX]; }; StackRecord stack1; //membuat variabel stack1 stack1.top = -1; //nilai top di awal program diset = -1 Praktikum Alstrukdat - Pertemuan 2

14 Praktikum Alstrukdat - Pertemuan 2
Kode Program – Push Proses push diawali dengan mengecek apakah stack dalam keadaan penuh atau tidak. Jika stack tidak penuh, maka nilai yang akan di-push diletakkan pada bagian paling atas (top). Nilai top bertambah 1. void push(int input, StackRecord &s){ //cek apakah stack PENUH atau tidak if (s.top == (MAX-1)){ //MAX = jumlah maksimum tumpukan cout<<"Stack penuh!"<<endl; } else { s.top = s.top + 1; //nilai top bertambah 1 s.Element[s.top] = input; //isi stack pd posisi top Praktikum Alstrukdat - Pertemuan 2

15 Praktikum Alstrukdat - Pertemuan 2
Kode Program – Pop Proses pop diawali dengan mengecek apakah stack dalam keadaan kosong atau tidak. Jika stack tidak kosong, maka nilai yang akan di-pop ditampung dalam variabel sementara (temp). Nilai top berkurang 1. void pop(StackRecord &s){ int temp; //variabel untuk menampung nilai yang di-pop //cek apakah stack KOSONG atau tidak if (s.top == -1){ cout<<"Stack kosong!"<<endl; } else { temp = s.Element[s.top]; //simpan nilai ke temp s.Element[s.top] = 0; //array pada posisi top = 0 s.top = s.top - 1; //top berkurang 1 cout<<"Nilai "<<temp<<" dikeluarkan."<<endl; Praktikum Alstrukdat - Pertemuan 2

16 Praktikum Alstrukdat - Pertemuan 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream> #include <conio.h> using namespace std; int const MAX = 5; //nilai maksimum tumpukan struct StackRecord{ int top; int Element[MAX]; }; void push(int input, StackRecord &s){ //cek apakah stack PENUH atau tidak if (s.top == (MAX-1)){ cout<<"Stack penuh!"<<endl; } else { s.top = s.top + 1; s.Element[s.top] = input; //bersambung ke halaman berikutnya Praktikum Alstrukdat - Pertemuan 2

17 Praktikum Alstrukdat - Pertemuan 2
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 int pop(StackRecord &s){ int temp; //cek apakah stack KOSONG atau tidak if (s.top == -1){ cout<<"Stack kosong!"<<endl; return 0; //kembalikan nilai 0 } else { temp = s.Element[s.top]; s.Element[s.top] = 0; s.top = s.top - 1; cout<<"Nilai "<<temp<<" dikeluarkan."<<endl; return temp; //mengembalikan nilai temp int main(){ StackRecord stack1; stack1.top = -1; char lanjut = 'y'; int nilai; //bersambung ke halaman berikutnya Praktikum Alstrukdat - Pertemuan 2

18 Praktikum Alstrukdat - Pertemuan 2
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 //memasukkan nilai ke dalam stack (PUSH) while (lanjut != 'n'){ cout<<"=============================================="<<endl; cout<<"Masukkan sebuah nilai ke dalam stack = "; cin>>nilai; push(nilai,stack1); //tanya apakah ingin input nilai lagi atau tidak cout<<"Input nilai lagi (Y/N)?"; cin>>lanjut; } //mengeluarkan isi stack (POP) dan menampilkan nilainya lanjut = 'y'; int temp; //untuk menyimpan nilai yang di-pop cout<<endl<<"Mengeluarkan isi stack"<<endl; temp = pop(stack1); //tanya apakah ingin mengeluarkan isi stack lagi atau tidak cout<<"Keluarkan isi stack lagi (Y/N)?"; getch(); return 0; Praktikum Alstrukdat - Pertemuan 2

19 Praktikum Alstrukdat - Pertemuan 2
Tugas Buatlah program yang dapat menyimpan nilai-nilai di bawah ini ke dalam sebuah stack: Nilai = 80, 54, 24, 100, 70, 67, 89, 90, 88 Nilai-nilai di atas dimasukkan satu per satu oleh user (input keyboard) menggunakan proses push. Kemudian, nilai tersebut dikeluarkan satu per satu dari dalam stack menggunakan proses pop. Saat proses pengeluaran tersebut, hitunglah juga berapa jumlah nilai yang sudah dikeluarkan. Lebih lanjut, lihat contoh program “contohtugas.cpp” Praktikum Alstrukdat - Pertemuan 2

20 Praktikum Alstrukdat - Pertemuan 2
Tugas Aturan pengumpulan tugas: Kode program dicetak di kertas A4 Screenshot program yang berhasil jalan ditampilkan juga (dicetak). Tugas dikumpul pada Hari Senin 17 Oktober 2016, bersamaan dengan tugas array pekan lalu. Praktikum Alstrukdat - Pertemuan 2


Download ppt "Algoritma dan Struktur Data"

Presentasi serupa


Iklan oleh Google