Anda di halaman 1dari 21

queue

STRUKTUR DATA
• Elemen yang pertama kali masuk ke
antrian akan keluar pertama kalinya
• Antrian dapat dibuat dengan
menggunakan: Linear Array dan
Circular Array
• First In First Out(FIFO)
Queue ADT
front or
head

rear or
tail

Queue – First in First Out Stack – Last In First Out


(FIFO) (LIFO)
Queue ADT
• Operations:
- Enqueue(data) or Push(data)
- Dequeue( ) or Pop( )
- Front ( ) or Peek ( ) O(1)
- IsEmpty ( )

void Enqueue (int data);


int Dequeue ( );

Enqueue Dequeue
Operasi:

Enqueue (2)
Enqueue (5)
Enqueue (3)
Dequeue ( )
Front ( )
IsEmpty ( )
Queue dalam kehidupan sehari-hari
Queue Implementation
• Static Implementation ( Array)
• Dynamic Implementation (Pointer)
QUEUE DENGAN LINEAR ARRAY

• Terdapat satu buah pintu masuk di suatu ujung dan


satu buah pintu keluar di ujung satunya
• Sehingga membutuhkan variabel misalnya Head
dan Tail

09/21/21
DEKLARASI QUEUE
#define MAX 8
typedef struct{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;

09/21/21
OPERASI-OPERASI PADA QUEUE

Create()
• Untuk menciptakan dan menginisialisasi Queue
• Dengan cara membuat Head dan Tail = -1

09/21/21
OPERASI-OPERASI PADA QUEUE
Is Empty()
• 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

09/21/21
Prosedure :

09/21/21
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

09/21/21
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

09/2
1/21
Procedure:

09/2
1/21
Dequeue()
• Digunakan untuk menghapus elemen terdepan/pertama
dari Antrian
• Dengan cara mengurangi counter Tail dan menggeser
semua elemen antrian kedepan.
• Penggeseran dilakukan dengan menggunakan looping

09/21/21
Procedure:

int Dequeue() {
if IsEmpty( );
return;
else if (antrian.head == antrian. tail);
antrian.head = antrian.tail = -1;
else
antrian.front++;
}
09/2
1/21
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

09/21/21
Procedure Clear:

Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head s/d tail

09/21/21
Procedure:

09/2
1/21
Task 3:
• Buat 1 contoh program dynamic
implementation queue, dengan minimal 3
procedure:

- Insert
- Delete
- Show

• Sertakan capture outputnya

Anda mungkin juga menyukai