QUEUE (Antrian).

Slides:



Advertisements
Presentasi serupa
Antrian (Queue) Desain dan Analisis Algoritma
Advertisements

Queue (Antrian).
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
STRUKTUR DATA array stack dan queue
QUEUE II. IMPLEMENTASI QUEUE
Kuliah Ke-4 Antrian / Queue (Bab 4)
QUEUE.
Pertemuan 5 STACK atau TUMPUKAN IMAM SIBRO MALISI NIM :
Queue.
Pertemuan (6) QUEUE (ANTREAN) IMAM SIBRO MALISI NIM :
Algoritma dan Struktur Data
STACK (Tumpukan).
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STACK.
STACK.
Struktur Data (Data Structure) – IS 2313
Pointer dalam Stack.
QUEUE (antrian).
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
STACK.
Queue.
Queue.
Struktur Data List Linear : Linked List (Double Linkedlist)
STRUKTUR DATA (4) array stack dan queue
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 Pertemuan 11.
Stack.
NAMA : siti hajar NIM : UNIT : b NO.hp : 0852 –
QUEUE hms_sept.
Double linked list non circular
STRUKTUR DATA (2) Single Linked List
Stack.
Sapta Candra Miarsa,S.T.,M.T.
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA QUIZ.
Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam.
Defri Kurniawan QUEUE Defri Kurniawan
STRUKTUR DATA – Pertemuan 6
Struktur Organisasi Data 2
STRUKTUR DATA QUEUE (Antrian)
STACK (Tumpukan).
QUEUE (ANTRIAN ) Disusun Oleh : Kelompok 2 Siti Hajar ( )
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
Algoritma dan Struktur Data
Struktur Data Khoiriya Latifa, M.Kom.
NAMA : SITI HAJAR NIM : UNIT : B NO.HP : 0852 – 2000 – 3786.
Nama : Siti Hajar Nim : Unit : B/III No.Hp : 0852 –
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Queue(Antrian).
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Single Linked List Circular (SLLC)
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
STRUKTUR DATA (8.2) double linked list circular
3.
Algoritma dan Struktur Data
Pertemuan – 7 Antrian / Queue (Bab 4).
STRUKTUR DATA Teknik Informatika S1
Queue Algoritma dan Struktur Data.
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

QUEUE (Antrian)

definisi Antrian (Queue) dpt diartikan kumpulan data dengan penambahan data(elemen) hanya melalui satu sisi saja, yaitu belakang (tail) dan penghapusan data (elemen) hanya melalui sisi depan (head) Hal ini membuat antrian bersifat FIFO (First In First Out), yaitu data masuk pertaman akan keluar pertama dan yang terakhir akan keluar terakhir.

Gambar ilustrasi antrian C D E F

lanjut Elemen pertama kali masuk disebut elemen depan (front/head of queue), yg terakhir disebut elemen belakang (rear/tail of queue). Antrian dapat dibuat baik dengan array maupun dengan struct. Pada pembuatan antrian dengan array, antrian yang disajikan bersifat statis, karena jumlah maksimal array sudah ditentukan sejak deklarasi awal.

Contoh : Penjualan karcis kereta, bioskop Penjadualan pencetakan (spooling system) Penjadualan pemakaian CPU Pemakaian I/O pada sistem komputer Penyimpan barang di Apotek

Operasi standar queue Membuat queue atau inisialisasi Mengecek apakah queue penuh atau full Mengecek apakah queue kosong atau empty Memasukkan elemen ke dalam queue atau InQueue (insert Queue) Menghapus elemen atau DeQueue (Delete Queue)

Implementasi Queue dengan Linear Array Implementasi Queue dengan Linear Array atau disebut model fisik (physical Model) yaitu bagian depan queue selalu menempati posisi pertama array

MODEL ANTRIAN / QUEUE D C B A A Kosong 1 Elemen 4 Elemen Belakang 1 4 C B Depan Depan Depan A A 1 1

TAMBAH ELEMEN A B C D Depan = 0 Belakang = 0 Depan = 1 Depan = 1

AMBIL ELEMEN A B C D Ambil 1 elemen Geser antrian Depan = 1 Belakang = 3

AMBIL ELEMEN B C D Ambil 1 elemen Geser antrian Depan = 1 Belakang = 2

AMBIL ELEMEN C D Ambil 1 elemen Geser antrian Depan = 1 Belakang = 1

AMBIL ELEMEN D Ambil 1 elemen Depan = 0 Belakang = 0

KAMUS DATA Kamus Data : Q : array [1..4] of Char Depan : Integer Belakang : Integer Q Belakang Depan

Deklarasi umum //deklarasi queue menggunakan array # define MAX 50 # define true 1 # define false 0 Struct queue { int data[MAX]; int head; int tail; }; Struct queue antri;

Algoritma PUSH Salah satu algoritma untuk proses memasukkan data (PUSH) adalah sebagai berikut: Masukkan inputan (x) Jika variabel cek = max (Nilai maksimal array), kerjakan langkah 3 Jika tidak, kerjakan langkah 4. Cetak “ANTRIAN PENUH” lalu selesai. Selama cek kurang dari max, maka c  c +1 dan data [c]  x.

Algoritma POP Salah satu algoritma untuk proses mengeluarkan data (POP) adalah sebagai berikut: Jika cek = 0, cetak “ANTRIAN KOSONG” kemudian selesai. Jika tidak, lakukan langkah 3. mulai x=0, selama x kurang dari cek, lakukan langkah 3 dan 4. data[x]  data [x+1]. data[cek-1]  NULL. cek  cek – 1

Operasi-operasi: 1. Fungsi init Digunakan utk menciptakan queue yg baru atau kosong, yaitu cara memberi nilai awal (head) dan nilai akhir(tail) dengan nol (0) void init (void) { antri.awal=0; antri.akhir=0; }

LANJUT.. 2.Fungsi Full Untuk mengecek apakah queue sdh penuh atau blm. jika nilai akhir (tail) = nilai max, maka fungsi akan mengembalikan nilai 1 jika tidak sama dengan maksimum, maka fungsi akan mengembalikan nilai 0 if full (void) { If (antri.akhir==MAX) return (true); Else return (false) }

Lanjut.. 3. Funsi Empty If Empty (void) { Untuk mencek apakah queue masih kosong atau sudah berisi data Dgn cara mencek nilai akhir (tail) bernilai nol atau tidak Jika nilai akhir (tail) = 0, maka fungsi akan mengembalikan nilai 1 Jika tidak 0, maka funsi akan mengembalikan nila If Empty (void) { If (antri.akhir==0) return(true) Else return(false); }

Lanjut.. 4. Fungsi InQueue Untuk memasukkan elemen ke dalam queue Jika queue masih koson, maka nilai awal(head) dan nilai akhir(tail) diubah menjadi 1 Jika tidak kosong dan antrian belum penuh, maka nilai akhir (tail) akan ditambah 1(increment)

Void inQueue (char elemen) { if (Empty()==true) antri. awal=1; antri Void inQueue (char elemen) { if (Empty()==true) antri.awal=1; antri.akhir=1; antri.info[antri.awal]=elemen; } Else If(full()!=true) antri.akhir++ Antri.info[antri.akhir]=elemen; printf(“Queue Overflow,,,\n”);

Lanjut 5. Fungsi DeQueue Untuk mengambil elemen dari queue, dgn cara memindah suatu elemen satu langkah ke posisi depannnya, sehingga elemen yang paling depan tertimpa

lanjut Char deQueue (void) { char isi; int i; if (empty()!=true) isi=antri.info[antri.awal]; for (i=antri.awal;i<=antri.akhir-1;i++) antri.info[i]=antri.info[i+1]; Antri.akhir –- Return(isi); } Else Printf(“Queue underflow…\n”);

6. Fungsi Clear Void clear (void) { while (empty()==0 dequeue(); }

Lanjut.. void create( ) { head=tail= -1}

Lanjut.. 2. 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 kebelakang, yaitu menggunakan nilai Tail

Lanjut.. Int IsEmpty ( ) { if(tail= = -1) return 1; else return 0; }

Lanjut.. Untuk mengecek apakah Antrian sudah penuh atau belum 3. Fungis 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(tail = = MAX-1) return 1; else return 0;}

Lanjut.. 4. Inqueue 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 terlebih dahulu

Lanjut..

//dengan array void Enqueue ( int data) { if(IsEmpty()= =1) { head=tail=0; data[tail]=data; printf(“%d masuk!”, data[tail])}; else if(IsFull() = = 0) { tail++; printf(“%d masuk!”, data[tail]);} }

Queue (9) Dequeue() Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 Penggeseran dilakukan dengan menggunakan looping

Lanjut..

int Dequeue( ){ int i; int e = data[head]; for (i=head;i<=tail-1;i++) { data[i] = data [i+1};} tail - -; return e; }

Queue (11) 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 ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca

Queue (12) void Clear ( ) { head = tail =-1; printf (“data clear”); }

Queue (13) Tampil() Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail void Tampil( ){ if(IsEmpty( )= = 0) { for(int i=head; i<= tail; i++) { printf (“%d”, data[i]);} } else pritf(“data kosong!\n”);

Soal Tambahkanlah function untuk mencari suatu elemen dalam queue & stack Tambahkan function untuk mengedit suatu elemen dalam queue & stack Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam function tersendiri NEXT : Pengenalan Pointer dan Function by Ref.