Antrian Python:FIFO, LIFO Contoh
Apa itu Antrian Python?
Antrian adalah wadah yang menyimpan data. Data yang dimasukkan terlebih dahulu akan dihapus terlebih dahulu, dan karenanya antrian disebut juga “First in First Out” (FIFO). Antrian memiliki dua ujung depan dan belakang. Item dimasukkan dari belakang dan dikeluarkan dari sisi depan.
Dalam tutorial Python ini, Anda akan belajar:
- Apa itu Antrian Python?
- Bagaimana Antrean Python Bekerja?
- Jenis Antrian dengan Python
- Instalasi antrian Python
- Metode tersedia di dalam kelas Antrian dan LifoQueue
- Contoh Antrian Masuk Pertama Keluar Pertama
- Contoh Antrian Masuk Terakhir Keluar Pertama
- Tambahkan lebih dari 1 item dalam Antrean
- Mengurutkan Antrian
- Membalik Antrian
Bagaimana Antrean Python Bekerja?
Antrian dapat dengan mudah dibandingkan dengan contoh dunia nyata antrean orang yang menunggu dalam antrian di loket tiket, orang yang berdiri pertama akan mendapatkan tiket terlebih dahulu, diikuti oleh orang berikutnya dan seterusnya. Logika yang sama juga berlaku untuk struktur data antrian.
Berikut adalah representasi diagram antrian:
Belakang mewakili titik di mana item dimasukkan ke dalam antrian. Dalam contoh ini, 7 adalah nilai untuk itu.
Bagian Depan mewakili titik di mana item dari antrian akan dihapus. Jika Anda menghapus item dari antrian, elemen pertama yang akan Anda dapatkan adalah 1, seperti yang ditunjukkan pada gambar.
Item 1 adalah yang pertama dimasukkan ke dalam antrian, dan saat menghapusnya adalah yang pertama keluar. Oleh karena itu antrian disebut FIRST IN FIRST OUT (FIFO)
Dalam antrian, item dihapus secara berurutan dan tidak dapat dihapus di antaranya. Anda tidak dapat menghapus item 5 secara acak dari antrean, untuk melakukannya Anda harus menghapus semua item sebelum 5. Item dalam antrean akan dihapus sesuai urutan dimasukkannya.
Jenis Antrian dengan Python
Ada dua jenis antrian di Python:
- First in First out Queue:Untuk ini, elemen yang masuk lebih dulu akan menjadi yang pertama keluar.
Untuk bekerja dengan FIFO, Anda harus memanggil Queue() kelas dari modul antrian.
- Masuk Terakhir, Antrian Keluar Pertama:Di sini, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.
Untuk bekerja dengan LIFO, Anda harus memanggil LifoQueue() kelas dari modul antrian.
Instalasi antrian Python
Sangat mudah untuk bekerja dengan antrian di python. Berikut adalah langkah-langkah yang harus diikuti untuk memanfaatkan antrian dalam kode Anda.
Langkah 1) Anda hanya perlu mengimpor modul antrian, seperti yang ditunjukkan di bawah ini:
import queue
Modul ini tersedia secara default dengan python, dan Anda tidak memerlukan instalasi tambahan untuk mulai bekerja dengan antrian. Ada 2 jenis antrian FIFO (first in first out) dan LIFO (last in first out).
Langkah 2) Untuk bekerja dengan antrian FIFO , panggil kelas Antrian menggunakan modul antrian yang diimpor seperti yang ditunjukkan di bawah ini:
import queue
q1 = queue.Queue()
Langkah 3) Untuk bekerja dengan antrian LIFO, panggil kelas LifoQueue() seperti yang ditunjukkan di bawah ini:
import queue
q1 = queue.LifoQueue()
Metode tersedia di dalam kelas Antrian dan LifoQueue
Berikut ini adalah metode penting yang tersedia di dalam kelas Queue dan LifoQueue:
- menempatkan(item): Ini akan menempatkan item di dalam antrian.
- dapatkan(): Ini akan mengembalikan Anda item dari antrean.
- kosong(): Ini akan mengembalikan true jika antrian kosong dan false jika item ada.
- qsize(): mengembalikan ukuran antrian.
- penuh(): mengembalikan nilai true jika antrean penuh, jika tidak salah.
Contoh Antrian Masuk Pertama Keluar Pertama
Dalam kasus first in first out, elemen yang masuk lebih dulu akan menjadi yang pertama keluar.
Tambahkan dan item dalam antrian
Mari kita bekerja pada contoh untuk menambahkan item dalam antrian. Untuk mulai bekerja dengan antrean, pertama-tama impor antrean modul, seperti yang ditunjukkan pada contoh di bawah ini.
Untuk menambahkan item, Anda dapat menggunakan metode put() seperti yang ditunjukkan pada contoh:
import queue
q1 = queue.Queue()
q1.put(10) #this will additem 10 to the queue.
Secara default, ukuran antrian tidak terbatas dan Anda dapat menambahkan sejumlah item ke dalamnya. Jika Anda ingin menentukan ukuran antrian, hal yang sama dapat dilakukan sebagai berikut
import queue
q1 = queue.Queue(5) #The max size is 5.
q1.put(1)
q1.put(2)
q1.put(3)
q1.put(4)
q1.put(5)
print(q1.full()) # will return true.
Keluaran:
True
Sekarang ukuran antrian adalah 5, dan tidak akan mengambil lebih dari 5 item, dan metode q1.full() akan mengembalikan nilai true. Menambahkan item lagi tidak akan mengeksekusi kode lebih jauh.
Hapus item dari antrian
Untuk menghapus item dari antrian, Anda dapat menggunakan metode yang disebut get(). Metode ini memungkinkan item dari antrian saat dipanggil.
Contoh berikut menunjukkan cara menghapus item dari antrian.
import queue
q1 = queue.Queue()
q1.put(10)
item1 = q1.get()
print('The item removed from the queue is ', item1)
Keluaran:
The item removed from the queue is 10
Contoh Antrian Keluar Pertama Terakhir
Dalam hal terakhir dalam antrian keluar pertama, elemen yang masuk terakhir akan menjadi yang pertama keluar.
Untuk bekerja dengan LIFO, yaitu terakhir di antrian keluar pertama, kita perlu mengimpor modul antrian dan menggunakan metode LifoQueue().
Tambahkan dan item dalam antrian
Di sini kita akan memahami cara menambahkan item ke antrian LIFO.
import queue
q1 = queue.LifoQueue()
q1.put(10)
Anda harus menggunakan metode put() pada LifoQueue, seperti yang ditunjukkan pada contoh di atas.
Hapus item dari antrian
Untuk menghapus item dari LIFOqueue Anda dapat menggunakan metode get() .
import queue
q1 = queue.LifoQueue()
q1.put(10)
item1 = q1.get()
print('The item removed from the LIFO queue is ', item1)
Keluaran:
The item removed from the LIFO queue is 10
Tambahkan lebih dari 1 item dalam Antrian
Dalam contoh di atas, kita telah melihat bagaimana menambahkan satu item dan menghapus item untuk FIFO dan LIFOqueue. Sekarang kita akan melihat bagaimana menambahkan lebih dari satu item dan juga menghapusnya.
Tambahkan dan item dalam FIFOqueue
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Hapus item dari FIFOqueue
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
Keluaran:
The value is 0
The value is 1
The value is 2
The value is 3
The value is 4
The value is 5
The value is 6
The value is 7
The value is 8
The value is 9
The value is 10
The value is 11
The value is 12
The value is 13
The value is 14
The value is 15
The value is 16
The value is 17
The value is 18
The value is 19
Tambahkan dan item dalam LIFOqueue
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Hapus item dari LIFOqueue
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
Keluaran:
The value is 19
The value is 18
The value is 17
The value is 16
The value is 15
The value is 14
The value is 13
The value is 12
The value is 11
The value is 10
The value is 9
The value is 8
The value is 7
The value is 6
The value is 5
The value is 4
The value is 3
The value is 2
The value is 1
The value is 0
Mengurutkan Antrian
Contoh berikut menunjukkan pengurutan antrian. Algoritma yang digunakan untuk pengurutan adalah pengurutan gelembung.
import queue
q1 = queue.Queue()
#Addingitems to the queue
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
#using bubble sort on the queue
n = q1.qsize()
for i in range(n):
x = q1.get() # the element is removed
for j in range(n-1):
y = q1.get() # the element is removed
if x > y :
q1.put(y) #the smaller one is put at the start of the queue
else:
q1.put(x) # the smaller one is put at the start of the queue
x = y # the greater one is replaced with x and compared again with nextelement
q1.put(x)
while (q1.empty() == False):
print(q1.queue[0], end = " ")
q1.get()
Keluaran:
3 4 5 10 11 21
Membalikkan Antrian
Untuk membalikkan antrian, Anda dapat menggunakan antrian dan rekursi lain.
Contoh berikut menunjukkan cara membalikkan antrian.
Contoh:
import queue
q1 = queue.Queue()
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
def reverseQueue (q1src, q2dest) :
buffer = q1src.get()
if (q1src.empty() == False) :
reverseQueue(q1src, q2dest) #using recursion
q2dest.put(buffer)
return q2dest
q2dest = queue.Queue()
qReversed = reverseQueue(q1,q2dest)
while (qReversed.empty() == False):
print(qReversed.queue[0], end = " ")
qReversed.get()
Keluaran:
10 3 21 4 5 11
Ringkasan:
- Antrian adalah wadah yang menyimpan data. Ada dua jenis Antrian, FIFO, dan LIFO.
- Untuk FIFO (First in First out Queue), elemen yang masuk terlebih dahulu akan menjadi yang pertama keluar.
- Untuk LIFO (Last in First out Queue), elemen yang masuk terakhir akan menjadi yang pertama keluar.
- Item dalam antrian ditambahkan menggunakan metode put(item).
- Untuk menghapus item, digunakan metode get().