Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
15 Apr 2021 · 2 mnt baca ·Artikel 11 / 119
Go

Cara Implementasi Queue (Antrian) Pada Golang

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

Pengertian Dasar

Queue atau sering kita tahu itu satu struktur data antrian dimana data yang kita masukkan akan diantrikan, dengan kata lain data yang pertama masuk akan keluar pertama juga. Biasanya kita sering tahu istrila FIFO (First In First Out).

Menurut informasi yang Santekno dapat, Queue atau antrian adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut di sisi belakang atau rear), dan menghapus atau mengambil elemen dilakukan lewat ujung yang lain (disebut dengan istilah sisi depan atau front).

Implementasi Queue

go
 1package main
 2
 3type Queue struct {
 4	items []int
 5}
 6
 7func (q *Queue) Enqueue(i int) {
 8	q.items = append(q.items, i)
 9}
10
11func (q *Queue) Dequeue() int {
12	if len(q.items) == 0 {
13		return -1
14	}
15	item, items := q.items[0], q.items[1:]
16	q.items = items
17	return item
18}
19
20func main() {
21	q := Queue{}
22	q.Enqueue(1)
23	q.Enqueue(2)
24	q.Enqueue(3)
25
26	println(q.Dequeue())
27	println(q.Dequeue())
28	println(q.Dequeue())
29}

Implementasi Queue menggunakan Channel

go
 1package main
 2
 3type Queue struct {
 4	items chan int
 5}
 6
 7func (q *Queue) Enqueue(i int) {
 8	q.items <- i
 9}
10
11func (q *Queue) Dequeue() int {
12	return <-q.items
13}
14
15func main() {
16	q := Queue{
17		items: make(chan int, 16),
18	}
19	q.Enqueue(1)
20	q.Enqueue(2)
21	q.Enqueue(3)
22
23	println(q.Dequeue())
24	println(q.Dequeue())
25	println(q.Dequeue())
26}

Penjelasan

Jika kamu sudah melihat bagaimana cara mengimplementasikan Queue tersebut, inti dari struktur data tersebut ada 2 operasi Enqueue yaitu memasukkan data ke dalam elemen sisi belakang (rear) dan Dequeue yaitu mengambil data di elemen sisi depan (front).

Artikel Terkait

💬 Komentar