Algoritma Pemrograman & Struktur Data

dokumen-dokumen yang mirip
Algoritma Pemrograman & Struktur Data

Algoritma Dan Struktur Data II

Algoritma Pemrograman & Struktur Data

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma dan Struktur Data STACK

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

Stack. Gambar 1.1 Stack

Struktur Data Array. Rijal Fadilah S.Si

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Algoritma Dan Struktur Data II. Queue

SENARAI BERANTAI (LINK LIST)

Modul Praktikum Algoritma dan Struktur Data

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

MODUL IV STACK A. TUJUAN

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

DIG1G3 Implementasi Struktur Data

LIST. Dewi Sartika, M.Kom

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

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

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

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

04. Single Linked List

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

LAPORAN PRAKTIKUM RESMI QUEUE

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Algoritma dan Struktur Data. Ramos Somya

Materi 8 : STACK (TUMPUKAN) Dosen:

LAPORAN PRAKTIKUM IV. Oleh:

BAB IV Antrian(Queue)

Pertemuan 7. REVIEW dan QUIS

Algoritma dan Struktur Data

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

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

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

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

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

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Algoritma dan Struktur Data. Linked List

Single Linked List (1)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

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

Praktikum Algoritma dan Struktur Data

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

S TA C K Sunu Wibirama

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

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

Algoritma dan Struktur Data. Pertemuan 7 Linked List

MODUL 6 SINGLE & DOUBLE LINKED LIST

# NINE Queue dengan Array

STRUKTUR DATA (2) Single Linked List

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

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

Algoritma dan Struktur Data. Queue

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

Linked List dan Implementasinya dalam Bahasa Java

ARNA FARIZA YULIANA SETIOWATI

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

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

KONSEP POINTER DAN LINKED LIST

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

Review : Sifat Implementasi Linear List dengan Array

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

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

4. STACK / TUMPUKAN TEORI PENUNJANG

STRUKTUR DATA Pertemuan 1 s.d 8

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

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Struktur Data II. Single Linked List - Non circular

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

Pertemuan 4. Single Linked List non Circular Menggunakan Head dan Tail

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

BAB VIII QUEUE (ANTRIAN)

Algoritma dan Struktur Data. Ramos Somya

BAB VII STACK ( TUMPUKAN)

05. Double Linked List

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

STRUKTUR DATA single linked list non circular

A. TUJUAN PEMBELAJARAN

LAPORAN PRAKTIKUM IX. Oleh:

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Array VS Linked List

Penambahan Simpul (Node)

BAB II STACK (TUMPUKAN)

ALGORITMA DAN STRUKTUR DATA

TIF 4201 Algoritma Dan Struktur Data

ARNA FARIZA YULIANA SETIOWATI

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

Linked List 6.3 & 7.3 NESTED LOOP

Transkripsi:

MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Stack Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 04 87042 Abstract Penjelasan mengenai stack dan penggunaannya Kompetensi Memahami definisi stack dan penggunaannya dalam pemrograman

Pembahasan Stack Stack adalah algoritma untuk menyimpan data. Stack memiliki operasi push untuk memasukkan data ke dalam stack dan pop untuk mengeluarkan data. Keluar dan masuknya data menggunakan prinsip LIFO (Last -In-First-Out). Artinya elemen yang terakhir masuk adalah yang bisa dikeluarkan pertama kali. Jika dibayangkan berupa sebuah list, maka stack adalah list yang terdiri atas sederet elemen tapi hanya bisa menambahkan atau menghapus elemen dari salah satu ujungnya saja. Push 5 3 7 Pop Gambar 1 Ilustrasi stack Misalnya kita memiliki sebuah stack yang kosong. Lalu kita memasukkan tiga buah elemen yang memiliki nilai 4, 5, dan 8. Elemen tersebut dimasukkan satu persatu dengan operasi push. Setelah 4, 5, dan 8 dimasukkan berurutan. Maka operasi pop berikutnya akan memberikan nilai 8 dan meninggalkan elemen 4 dan 5 di dalam stack. Jika dilakukan pop lagi akan memberikan nilai 5 dan meninggalkan 4 di dalam stack. Lalu kita masukkan elemen baru ke dalam stack, yaitu 9. Lakukan pop lagi akan memberikan nilai 9 dan pop berikutnya memberikan nilai 4. Setelah itu stack menjadi kosong kembali. Contoh ini digambarkan dalam tabel berikut ini: Operation Stack after operation Push(4) 4 Push(5) 5 4 Push(8) 8 5 4 Pop() 5 4 Pop() 4 Push(9) 9 4 Pop 4 Pop <empty> 2

Selain Push dan Pop, operasi yang biasa digunakan dalam penggunaan stack adalah Top dan isempty. Jika contoh di atas kita tulis ulang menggunakan Top dan isempty akan menjadi sebagai berikut: Operation Stack after operation Push(4) 4 Push(5) 5 4 Push(8) 8 5 4 Pop() 8 5 4 Top() 5 5 4 Pop() 4 Push(9) 9 4 isempty() 9 4 false Pop 4 Pop <empty> isempty() <empty> true Untuk implementasi stack dalam aplikasi, metode stack dapat digunakan untuk fungsi undo seperti dalam aplikasi editor. Dalam fungsi undo tersebut kita hanya perlu untuk menambahkan atau mengambil nilai yang ada di salah satu ujung dalam daftar. Seluruh operasi stack harus membutuhkan waktu yang konstan atau O(1). Dengan demikian berapapun elemen yang ada dalam stack tidak boleh mempengaruhi besarnya waktu yang dibutuhkan untuk melakukan operasi Push ataupun Pop. 3

Implementasi Stack menggunakan Array Stack dapat diimplementasikan menggunakan array karena stack dan array adalah samasama merupakan list di mana di dalamnya ada sederet elemen. Dalam array juga dimungkinkan operasi-operasi untuk menambahkan atau menghapus elemen di salah satu ujungnya. Dengan demikian array bisa digunakan untuk mengimplementasikan stack. Berikut ini adalah contoh implementasi stack menggunakan array: 2 10 5 0 1 2 3 4 5 6 7 8 9 Pseudo code: int A[10] top -1 Push(x) { top top + 1 A[top] x Pop() { top top-1 Setelah melakukan inisialisasi array dengan mengalokasikan 10 elemen, variabel top (bukan fungsi Top) diisi dengan nilai -1 yang menunjukkan bahwa stack tersebut masih kosong. Dalam fungsi Push yang berfungsi untuk menambahkan sebuah elemen, terlebih dahulu variabel top ditambahkan dengan nilai satu dan elemen baru dimasukkan ke dalam array menggunakan indeks sesuai nilai top. Dalam fungsi Pop, untuk mengurangi sebanyak satu elemen kita cukup menggeser posisi top atau dengan kata lain mengurangi nilai top sebanyak 1. Operasi Push dan Pop dalam contoh ini membutuhkan waktu yang konstan berapapun jumlah elemennya selama jumlah seluruh elemennya tidak lebih dari 10 elemen. Apabila operasi Push dilakukan saat elemen sudah berjumlah 10 maka array tersebut tidak lagi mencukupi dan mengalami overflow. Akibatnya ukuran array harus diperbesar. Kita harus membuat array baru yang lebih besar dan mengkopi seluruh elemen dari array yang lama ke dalam array yang baru. Bila ini terjadi maka operasi Push tidak lagi membutuhkan waktu yang konstan tetapi tergantung pada jumlah elemen yang harus dipindahkan. 4

Untuk melengkapi pseudo code di atas kita akan menambahkan fungsi Top dan isempty seperti berikut: Top() { return A[top] isempty() { if (top == -1) return true else return false Operasi Top mengembalikan nilai dari array A pada indeks yang disimpan dalam variabel global top. Sementara itu fungsi isempty mengecek apakah variabel top berisi nilai -1 di mana berarti stack dalam kondisi kosong. Berikut ini adalah contoh implementasi stack menggunakan array dalam bahasa C++ #include <stdio.h> #define MAX_SIZE 101 int A[MAX_SIZE]; int top=-1; void Push(int x) { if(top==max_size -1) { printf("error"); return; A[++top] = x; void Pop() { if (top == -1) { printf("error"); return; top--; 5

void Print() { int i; for(i=0;i<=top;i++) printf("%d",a[i]); printf("\n"); int main() { Push(2); Print(); Push(5); Print(); Push(10); Print(); Pop(); Print(); Push(12); Print(); Apabila program tersebut dijalankan akan menampilkan angka-angka seperti berikut: 2 25 2510 25 2512 Fungsi Print() sebenarnya bukan operasi dasar stack. Fungsi Print() dalam contoh di atas digunakan hanya untuk menampilkan isi stack ke layar. 6

Implementasi Stack menggunakan Linked List Stack juga dapat diimplementasikan menggunakan linked list. Di bawah ini adalah contoh sebuah linked list. Untuk mengimplementasikan sebuah linked list sebagai sebuah stack, kita harus dapat menambahkan elemen di salah satu ujungnya. Untuk linked list berarti pilihannya adalah pada head atau tail. Dalam linked list jika kita ingin menambahkan elemen pada bagian tail kita harus mencari terlebih dahulu lokasi dari tail. Caranya adalah dengan cara menelusuri tiap elemen satu persatu dari head. Dengan demikian untuk menambahkan sebuah elemen pada tail akan membutuhkan waktu yang banyaknya bergantung pada banyaknya elemen dalam linked list tersebut. Begitu pula jika kita ingin menghapus elemen terakhir dari linked list. Pertama kita harus menemukan lokasinya terlebih dahulu dengan cara menelusuri tiap elemen satu persatu hingga menemukan bagian akhir. Kemudian baru kita bisa menghapus elemen terakhir tersebut dan menggantikannya dengan elemen sebelumnya. Dengan demikian untuk menghapus sebuah elemen di bagian akhir linked list juga akan membutuhkan waktu yang besarnya bergantung pada banyaknya elemen dari linked list tersebut. Hal ini tidak bisa diterima karena operasi stack membutuhkan waktu yang konstan, yaitu harus selalu sama berapapun jumlah elemen yang ada dalam list tersebut. 2 200 4 400 7 0 NULL 100 200 400 5 NULL 350 Berbeda dengan apabila kita menambahkan atau mengurangi elemen di awal linked list atau dengan kata lain pada bagian head. Untuk itu kita tinggal mengubah alamat yang disimpan sebagai head dan menggantinya dengan alamat dari elemen yang baru. Begitu pula dengan elemen yang baru, alamat pointer berikutnya diisi dengan alamat elemen yang sebelumnya menjadi head. Dengan demikian untuk menambahkan maupun mengurangi elemen pada bagian head dari sebuah linked list akan membutuhkan waktu yang konstan dan tidak tergantung pada banyaknya elemen dari linked list tersebut 7

2 200 4 400 7 0 NULL 100 200 400 5 100 350 Berikut ini adalah contoh implementasi stack menggunakan linked list dalam bahasa C++: #include <iostream.h> #include <stdlib.h> struct node { int data; node* next; ; node* top = NULL; void Push(int x) { node* newtop = (node*)malloc(sizeof(struct node*)); newtop->data = x; newtop->next = top; top = newtop; void Pop() { node *temp; if (top==null) return; temp = top; top = top->next; free(temp); 8

void displaystack() { node* currnode = top; cout << "Stack:" << endl; while(currnode->next!= NULL) { cout << currnode->data << endl; currnode = currnode->next; cout << currnode->data << endl; int main() { Push(2); Push(4); Push(9); displaystack(); Pop(); displaystack(); Pop(); displaystack(); return 0; Apabila program tersebut dijalankan akan menampilkan angka-angka seperti berikut: Stack: 9 4 2 Stack: 4 2 Stack: 2 9

Daftar Pustaka Oualline, S. (1995), Practical C+ Programming,O Reilly & Associates, Inc. 10