Algoritma dan Struktur Data. Ramos Somya

dokumen-dokumen yang mirip
# NINE Queue dengan Array

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

Algoritma dan Struktur Data. Ramos Somya

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

# EIGHT ADT (Abstract Data Type) dan Stack Array

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

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Algoritma Dan Struktur Data II. Queue

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

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

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

Struktur Data Array. Rijal Fadilah S.Si

LAPORAN PRAKTIKUM RESMI QUEUE

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

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

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Algoritma Dan Struktur Data II

Antrian (Queue) Susunan koleksi data dimana proses penambahan data (add) dilakukan dari belakang dan penghapusan data (delete) dilakukan dari depan.

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

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

S TA C K Sunu Wibirama

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

Pertemuan 7. REVIEW dan QUIS

LAPORAN PRAKTIKUM IV. Oleh:

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Materi 8 : STACK (TUMPUKAN) Dosen:

DIKTAT PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

Modul Praktikum Algoritma dan Struktur Data

MODUL IV STACK A. TUJUAN

BAB III. Stack. ( Tumpukan )

Algoritma Pemrograman & Struktur Data

ARNA FARIZA YULIANA SETIOWATI

Praktikum Algoritma dan Struktur Data

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

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

LAPORAN PRAKTIKUM IV. Oleh :

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

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

MODUL PEMROGRAMAN 2. Queue (Antrian)

Praktikum 4. Tumpukan (Stack)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

A. TUJUAN PEMBELAJARAN

BAB IV Antrian(Queue)

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

KONSEP POINTER DAN LINKED LIST

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

Algoritma dan Struktur Data STACK

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

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA

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

Materi 9 : QUEUE (ANTREAN) Dosen:

A. TUJUAN PEMBELAJARAN

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

ARNA FARIZA YULIANA SETIOWATI

KONSEP POINTER DAN LINKED LIST

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

STRUKTUR DATA Pertemuan 1 s.d 8

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Algoritma Dan Struktur Data II

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

BAB III QUEUE (ANTRIAN)

05. Double Linked List

KONSEP POINTER DAN LINKED LIST

SATUAN ACARA PENGAJARAN

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

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

Stack. Gambar 1.1 Stack

# TEN Sorting PENDAHULUAN

04. Single Linked List

Praktikum 5. Antrian (Queue)

BAB VIII QUEUE (ANTRIAN)

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

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

BAB 2 SORTING (PENGURUTAN)

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

TIF 4201 Algoritma Dan Struktur Data

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

Algoritma dan Struktur Data. Queue

Struktur Data dan Algoritma

MODUL PRAKTIKUM STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

Struktur Data II. Single Linked List - Non circular

MODUL I ARRAY 1 DIMENSI

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

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

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

BAB II STACK (TUMPUKAN)

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

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

MI, KA-D3, SIA, SIB. ADI, S.Kom.

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

STRUKTUR DATA single linked list non circular

BAB III METODE PENELITIAN. transmisi data streaming menggunakan Zigbee wireless network dengan

Transkripsi:

Algoritma dan Struktur Data Ramos Somya

Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman eksekusi suatu fungsi menggunakan prinsip Stact. Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack

Program memanggil fungsi satu, di dalam fungsi satu memanggil fungsi dua, di dalam fungsi dua memanggil fungsi tiga.

Push : digunakan untuk menambah item pada stack pada tumpukan paling atas Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas Clear : digunakan untuk mengosongkan stack IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Definisikan Stack dengan menggunakan struct Contoh : typedef struct STACK int top; char data[10][10]; ; Definisikan MAX_STACK untuk maksimum isi stack Contoh : #define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9 Buatlah variabel tumpuk sebagai implementasi stack secara nyata Contoh : STACK tumpuk; Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG! Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!

9 MAX_STACK 8 7 6 5 4 void inisialisasi() tumpuk.top = -1; 3 2 1 0 Top=-1

Untuk memeriksa apakah stack sudah penuh. Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full. int IsFull() if(tumpuk.top == MAX_STACK-1) return 1; else return 0;

Untuk memeriksa apakah stack masih kosong. Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong! int IsEmpty() if(tumpuk.top == -1) return 1; else return 0;

Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack. Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement). void Push(char d[10]) tumpuk.top++; strcpy(tumpuk.data[tumpuk.top],d);

Untuk mengambil elemen teratas dari stack. Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang. void Pop() printf("data yang terambil = %s\n",tumpuk.data[tumpuk.top]); tumpuk.top--;

Untuk menampilkan semua elemen-elemen stack Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil! void TampilStack() for(int i=tumpuk.top;i>=0;i--) printf("data : %s\n",tumpuk.data[i]);

#include <stdio.h> #include <conio.h> #include <string.h> #define MAX_STACK 10 typedef struct STACK int top; char data[10][10]; ; STACK tumpuk; void inisialisasi() tumpuk.top = -1; int IsFull() if(tumpuk.top == MAX_STACK-1) return 1; else return 0; int IsEmpty() if(tumpuk.top == -1) return 1; else return 0; void Push(char d[10]) tumpuk.top++; strcpy(tumpuk.data[tumpuk.top],d); void Pop() printf("data yang terambil = %s\n",tumpuk.data[tumpuk.top]); tumpuk.top--; void Clear() tumpuk.top=-1; void TampilStack() for(int i=tumpuk.top;i>=0;i--) printf("data : %s\n",tumpuk.data[i]); int main() int pil; inisialisasi(); char dt[10]; do printf("1. push\n"); printf("2. pop\n"); printf("3. print\n"); printf("4. clear\n"); printf("5. exit\n"); printf("pilihan : "); scanf("%d",&pil); switch(pil) case 1: if(isfull()!= 1) printf("data = ");scanf("%s",dt); Push(dt); else printf("\nsudah penuh!\n"); break; case 2: if(isempty()!= 1) Pop(); else printf("\nmasih kosong!\n"); break; case 3: if(isempty()!= 1) TampilStack(); else printf("\nmasih kosong!\n"); break; case 4: Clear(); printf("\nsudah kosong!\n"); break; getch(); while(pil!= 5); getch();

Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya (FIFO). Contoh: pencarian dengan metode Breadth First Search. DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian. Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya. Sehingga membutuhkan variabel Head dan Tail Deklarasi Queue : #define MAX 8 typedef struct int data[max]; int head; int tail; Queue; Queue antrian;

Create ( ) Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail = -1 void Create() antrian.head=antrian.tail=-1; IsEmpty ( ) Untuk memeriksa apakah Antrian sudah penuh atau belum Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian ke belakang, yaitu menggunakan nilai Tail int IsEmpty() if(antrian.tail==-1) return 1; else return 0;

IsFull Untuk mengecek apakah Antrian sudah penuh atau belum Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh int IsFull() if(antrian.tail==max-1) return 1; else return 0; Enqueue (data) Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang. Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail void Enqueue(int data) if(isempty()==1) antrian.head=antrian.tail=0; antrian.data[antrian.tail]=data; printf("%d masuk!",antrian.data[antrian.tail]); else if(isfull()==0) antrian.tail++; antrian.data[antrian.tail]=data; printf("%d masuk!",antrian.data[antrian.tail]);

Dequeue() Digunakan untuk menghapus elemen terdepan/pertama dari Antrian Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian ke depan. Penggeseran dilakukan dengan menggunakan looping int Dequeue() int i; int e = antrian.data[antrian.head]; for(i=antrian.head;i<=antrian.tail-1;i++) antrian.data[i] = antrian.data[i+1]; antrian.tail--; return e;

Clear() Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya void Clear() antrian.head=antrian.tail=-1; printf("data clear"); Tampil Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail void Tampil() if(isempty()==0) for(int i=antrian.head;i<=antrian.tail;i++) printf("%d ",antrian.data[i]); else printf("data kosong!\n");