linear data structures (queue)

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

Upload: geoffrey-lancaster

Post on 02-Jan-2016

75 views

Category:

Documents


15 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linear Data Structures (Queue)

Linear Data Structures(Queue)

Teknik Informatika - Universitas Muhammadiyah Malang (UMM)Tahun Akademik 2010-2011

Oleh : Nur Hayatin, S.ST

Page 2: Linear Data Structures (Queue)

Sub Topik

• Queue• Operasi Queue• Implementasi Queue• Latihan

Page 3: Linear Data Structures (Queue)

QUEUE(Antrian)

Page 4: Linear Data Structures (Queue)

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.

Page 5: Linear Data Structures (Queue)

Gambaran Proses

Front : DepanRear : Belakang

Page 6: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 7: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 8: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 9: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 10: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 11: Linear Data Structures (Queue)

Queue (Antrian)

Front Rear

Page 12: Linear Data Structures (Queue)

Operasi Queue

Page 13: Linear Data Structures (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)

Page 14: Linear Data Structures (Queue)

Operasi Enqueue (add)

• Operasi penambahan elemen pada antrian.• Dilakukan pada rear.• Increment rear.

Page 15: Linear Data Structures (Queue)

Operasi Dequeue (remove)

• Operasi penghapusan elemen pada antrian.• Untuk Queue array terjadi pergeseran elemen

dari belakang ke depan.• Dilakukan pada Front.• Decrement rear.

Page 16: Linear Data Structures (Queue)

Operasi Get Front

• Pengambilan/pengaksesan elemen yang paling depan.

• Elemen yang ditunjuk oleh front.

Page 17: Linear Data Structures (Queue)

Operasi Get Rear

• Pengambilan/pengaksesan elemen yang paling belakang.

• Elemen yang ditunjuk oleh rear.

Page 18: Linear Data Structures (Queue)

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

Page 19: Linear Data Structures (Queue)

QUEUE DENGAN CIRCULAR ARRAY

Page 20: Linear Data Structures (Queue)

Circular Array

• Mampu melakukan proses penghapusan elemen tanda melakukan pergeseran.

Page 21: Linear Data Structures (Queue)

Aturan Circular Array

1. Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1 : depan=depan + 1.

2. Proses penambahan elemen sama dengan queue linear array yaitu nilai belakang ditambah 1 : belakang=belakang + 1.

3. Jika depan = maks dan ada elemen yang akan dihapus, maka nilai depan = 1.

4. Jika belakang = maks dan depan tidak 1 maka jika ada elemen yang akan ditambahkan, nilai belakang=1.

5. Jika hanya tinggal 1 elemen di queue (depan = belakang), dan akan dihapus maka depan diisi 0 dan belakang diisi dengan 0 (queue kosong).

Page 22: Linear Data Structures (Queue)

Circular Array

Page 23: Linear Data Structures (Queue)

Proses Circular Array

Page 24: Linear Data Structures (Queue)

Proses Circular Array

Page 25: Linear Data Structures (Queue)

Queue dalam Program

Page 26: Linear Data Structures (Queue)

The Interface Queue

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

Page 27: Linear Data Structures (Queue)

Class ArrayQueue

Page 28: Linear Data Structures (Queue)

Inisialisasi Awal

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

Page 29: Linear Data Structures (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);

}

Page 30: Linear Data Structures (Queue)

Method empty()

public boolean isEmpty() {

return rear == -1; }

Page 31: Linear Data Structures (Queue)

Method getFront()

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

Page 32: Linear Data Structures (Queue)

Method getRear()

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

Page 33: Linear Data Structures (Queue)

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; }

Page 34: Linear Data Structures (Queue)

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; }

Page 35: Linear Data Structures (Queue)

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()); } } }

Page 36: Linear Data Structures (Queue)

Class LinkedQueue

Page 37: Linear Data Structures (Queue)

Class ChainNodeclass 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;}}

Page 38: Linear Data Structures (Queue)

Inisialisasi Awal

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

Page 39: Linear Data Structures (Queue)

Method isEmpty()

public boolean isEmpty() {

return front == null; }

Page 40: Linear Data Structures (Queue)

Method getFront()

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

Page 41: Linear Data Structures (Queue)

Method getRear()

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

Page 42: Linear Data Structures (Queue)

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; }

Page 43: Linear Data Structures (Queue)

Method remove()

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

Page 44: Linear Data Structures (Queue)

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()); } } }

Page 45: Linear Data Structures (Queue)

Class CircularQueue

Page 46: Linear Data Structures (Queue)

Inisialisasi Awal

class CircularQueue{

private int maxSize;private int[] queArray;private int front;private int rear;private int nItems;

Page 47: Linear Data Structures (Queue)

Constructor

public CircularQueue(int s){

maxSize = s;queArray = new int[maxSize];front = 0;rear = -1;nItems = 0;

}

Page 48: Linear Data Structures (Queue)

Method isEmpty()

public boolean isEmpty(){

return (nItems==0);

}

Page 49: Linear Data Structures (Queue)

Method peekFront()

public int peekFront(){

return queArray[front];

}

Page 50: Linear Data Structures (Queue)

Method insert()

public void insert(int j){

if(rear == maxSize-1)rear = -1;

queArray[++rear] = j; nItems++;

}

Page 51: Linear Data Structures (Queue)

Method remove()

public int remove(){

int temp = queArray[front++]; if(front == maxSize)front = 0;nItems--; return temp;

}

Page 52: Linear Data Structures (Queue)

Method main()public static void main(String[] args){

CircularQueue theQueue = new CircularQueue(5); // queue holds 5 itemsSystem.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);theQueue.remove();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(" ");

}

Page 53: Linear Data Structures (Queue)

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