Linear Data Structures (Queue)

Slides:



Advertisements
Presentasi serupa
Queue (Antrian).
Advertisements

Dr. Anto Satriyo Nugroho, M.Eng
Pertemuan 5 Struktur Data
LINKED LIST.
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
Struktur Data Queue Sandy dan Erick.
QUEUE.
Implementasi Binary Tree
Queue.
Pertemuan (6) QUEUE (ANTREAN) IMAM SIBRO MALISI NIM :
Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom UI - IKI20100 IKI 20100: Struktur.
Algoritma dan Struktur Data
STACK (Tumpukan).
Struktur Data (Data Structure) – IS 2313
QUEUE (antrian).
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
Queue.
Queue.
Algoritma & Struktur Data
Queue.
Linear List Teknik Informatika Universitas Muhammadiyah Malang SP Algoritma & Struktur Data.
Struktur Data List Linear : Linked List (Double Linkedlist)
Mempelajari tipe data queue dan bagaimana menggunakan fungsi insert, remove, is_empty dan is_full. Mempelajari bagaimana mengimplementasikan queue dengan.
Linear Data Structures (Stack)
Circular Queue.
Struktur Data List Linear : Linked List (Single Linkedlist)
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
ANTRIAN Farid Wajdi Yusuf Pendidikan Teknik Informatika dan Komputer
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
STRUKTUR DATA QUEUE.
STRUKTUR DATA Queue atau Antrian.
Pertemuan : Algoritma & Struktur Data
Stack.
Queue By Serdiwansyah N. A. 1. Queue Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain.
Program Studi Teknik Informatika
BAB3 QUEUE 6.3 & 7.3 NESTED LOOP.
QUEUE Copyright 2008 by Yohana.
QUEUE Denny Agustiawan,M.pd
Program Studi Teknik Informatika
Defri Kurniawan QUEUE Defri Kurniawan
Linear Data Structures (Stack)
STRUKTUR DATA – Pertemuan 6
Queue (Antrian).
Struktur Organisasi Data 2
Queue.
STRUKTUR DATA QUEUE (Antrian)
STACK (Tumpukan).
QUEUE (ANTRIAN ) Disusun Oleh : Kelompok 2 Siti Hajar ( )
Program Studi Teknik Informatika
Program Studi Teknik Informatika
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
Struktur Data Khoiriya Latifa, M.Kom.
Program Studi Teknik Informatika
Linear Data Structures (Array)
QUEUE Pertemuan ke-6 T 0026.
Program Studi Teknik Informatika
STACK (Tumpukan).
Queue(Antrian).
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
Pertemuan 6 Queue dengan Array
Algoritma dan Struktur Data
Algoritma dan Struktur Data
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
TIF 4201 Algoritma Dan Struktur Data Abstract Data Type
STRUKTUR DATA Teknik Informatika S1
Queue Algoritma dan Struktur Data.
QUEUE (Antrian).
Transcript presentasi:

Linear Data Structures (Queue) Oleh : Nur Hayatin, S.ST Teknik Informatika - Universitas Muhammadiyah Malang (UMM) Tahun Akademik 2010-2011

Sub Topik Queue Operasi Queue Implementasi Queue Latihan

QUEUE (Antrian)

Definisi Urutan elemen yang mengikuti konsep FIFO. FIFO(First In First Out) Front  menunjuk pada elemen yang paling atas. Rear  menunjuk pada elemen yang paling belakang.

Gambaran Proses Front : Depan Rear : Belakang

Queue (Antrian) Front Rear

Queue (Antrian) Front Rear

Queue (Antrian) Front Rear

Queue (Antrian) Front Rear

Queue (Antrian) Front Rear

Queue (Antrian) Front Rear

Operasi Queue

Operasi Enqueue/put (operasi penambahan elemen) Dequeue/remove (operasi penghapusan elemen) Get front (operasi pengaksesan elemen terdepan) Get rear (operasi pengaksesan elemen paling belakang)

Operasi Enqueue (add) Operasi penambahan elemen pada antrian. Dilakukan pada rear. Increment rear.

Operasi Dequeue (remove) Operasi penghapusan elemen pada antrian. Untuk Queue array terjadi pergeseran elemen dari belakang ke depan. Dilakukan pada Front. Decrement rear.

Operasi Get Front Pengambilan/pengaksesan elemen yang paling depan. Elemen yang ditunjuk oleh front.

Operasi Get Rear Pengambilan/pengaksesan elemen yang paling belakang. Elemen yang ditunjuk oleh rear.

Contoh Penerapan Queue mailbox dalam komunikasi antar proses simulasi dan modeling (misalnya simulasi sistem pengendali lalu lintas udara) dalam memprediksi performansi Waiting Line pada Sistem Operasi

QUEUE DENGAN CIRCULAR ARRAY

Circular Array Mampu melakukan proses penghapusan elemen tanda melakukan pergeseran.

Aturan Circular Array Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1 : depan=depan + 1. Proses penambahan elemen sama dengan queue linear array yaitu nilai belakang ditambah 1 : belakang=belakang + 1. Jika depan = maks dan ada elemen yang akan dihapus, maka nilai depan = 1. Jika belakang = maks dan depan tidak 1 maka jika ada elemen yang akan ditambahkan, nilai belakang=1. Jika hanya tinggal 1 elemen di queue (depan = belakang), dan akan dihapus maka depan diisi 0 dan belakang diisi dengan 0 (queue kosong).

Circular Array

Proses Circular Array

Proses Circular Array

Queue dalam Program

The Interface Queue public interface Queue { public boolean isEmpty(); public Object getFrontEelement(); public Object getRearEelement(); public void put(Object theObject); public Object remove(); }

Class ArrayQueue

Inisialisasi Awal public class ArrayQueue implements Queue { int front=0; int rear=-1; Object [] queue;

Constructor public ArrayQueue(int initialCapacity) { if (initialCapacity < 1) throw new IllegalArgumentException ("initialCapacity must be >= 1"); queue = new Object [initialCapacity + 1]; } public ArrayQueue() this(10);

Method empty() public boolean isEmpty() { return rear == -1; }

Method getFront() public Object getFrontElement() { if (isEmpty()) return null; else return queue[front]; }

Method getRear() public Object getRearElement() { if (isEmpty()) return null; else return queue[rear]; }

Method put() public void put(Object theElement) { if (rear == queue.length - 1) Object [] newArray = new Object [2*queue.length];   System.arraycopy(queue, 0, newArray, 0, queue.length);   queue = newArray; }   queue[++rear] = theElement;

Method remove() public Object remove() { if (isEmpty()) return null; Object frontElement = queue[front]; for(int i = 1;i<=rear; i++) queue[i-1] = queue[i]; --rear; return frontElement; }

Method main() public static void main(String [] args) { int x; ArrayQueue q = new ArrayQueue(3); q.put(new Integer(1)); q.put(new Integer(2)); q.put(new Integer(3)); q.put(new Integer(4)); q.remove(); q.remove(); q.put(new Integer(5)); q.put(new Integer(6)); q.put(new Integer(7)); q.put(new Integer(8)); q.put(new Integer(9)); q.put(new Integer(10)); q.put(new Integer(11)); q.put(new Integer(12)); while (!q.isEmpty()) System.out.println("Rear element is " + q.getRearElement()); System.out.println("Front element is " + q.getFrontElement()); System.out.println("Removed the element " + q.remove()); }

Class LinkedQueue

Class ChainNode class ChainNode { // package visible data members Object element; ChainNode next; // package visible constructors ChainNode() {} ChainNode(Object element) {this.element = element;} ChainNode(Object element, ChainNode next) {this.element = element; this.next = next;} }

Inisialisasi Awal public class LinkedQueue implements Queue { protected ChainNode front; protected ChainNode rear;

Method isEmpty() public boolean isEmpty() { return front == null; }

Method getFront() public Object getFrontElement() { if (isEmpty()) return null; else return front.element; }

Method getRear() public Object getRearElement() { if (isEmpty()) return null; else return rear.element; }

Method put() public void put(Object theElement) { ChainNode p = new ChainNode(theElement, null); if (front == null) front = p; // empty queue else rear.next = p; // nonempty queue rear = p; }

Method remove() public Object remove() { if (isEmpty()) return null; Object frontElement = front.element; front = front.next; rear = null; // enable garbage collection return frontElement; }

Method main() public static void main(String [] args) { int x; LinkedQueue q = new LinkedQueue(3); q.put(new Integer(1)); q.put(new Integer(2)); q.put(new Integer(3)); q.put(new Integer(4)); while (!q.isEmpty()) System.out.println("Rear element is " + q.getRearElement()); System.out.println("Front element is " + q.getFrontElement()); System.out.println("Removed the element " + q.remove()); }

Class CircularQueue

Inisialisasi Awal class CircularQueue { private int maxSize; private int[] queArray; private int front; private int rear; private int nItems;

Constructor public CircularQueue(int s) { maxSize = s; queArray = new int[maxSize]; front = 0; rear = -1; nItems = 0; }

Method isEmpty() public boolean isEmpty() { return (nItems==0); }

Method peekFront() public int peekFront() { return queArray[front]; }

Method insert() public void insert(int j) { if(rear == maxSize-1) queArray[++rear] = j; nItems++; }

Method remove() public int remove() { int temp = queArray[front++]; if(front == maxSize) front = 0; nItems--; return temp; }

Method main() public static void main(String[] args) { CircularQueue theQueue = new CircularQueue(5); // queue holds 5 items System.out.println("front : " + theQueue.front + "rear : " + theQueue.rear); theQueue.insert(10); theQueue.insert(20); theQueue.insert(30); theQueue.insert(40); theQueue.remove(); System.out.println(“remove 1x, front : " +theQueue.front +" rear : " +theQueue.rear); theQueue.insert(50); theQueue.insert(60); System.out.println("add 2 elemen, front : " +theQueue.front+"rear:”+theQueue.rear); System.out.println(“remove 1x, front : " +theQueue.front+ “rear : " +theQueue.rear); while( !theQueue.isEmpty() ) int n = theQueue.remove(); System.out.print(n); System.out.print(" "); }

Pustaka Sartaj Sahni, Presentation L5 & L10 Jokonowo, Bambang S.Si, “Pemrograman Berorientasi Obyek”, Pusat pengembangan bahan ajar UMB, 2006. Noviyanto, “Pemrograman Berorientasi Obyek (PBO) – Array”, 2005 Nugroho, Adi, “Algoritma dan Struktur Data Dalam Bahasa Java”, ANDI Yogyakarta, 2008. Michaell Waite, ”Data Structures and Algorithms in Java”, SAMS, 2001