Python Antrian: FIFO, Contoh LIFO

Apa itu Python Antre?

Antrian adalah wadah yang menyimpan data. Data yang dimasukkan terlebih dahulu akan dihapus terlebih dahulu, oleh karena itu antrian disebut juga “First in First Out” (FIFO). Antrian memiliki dua ujung depan dan belakang. Barang dimasukkan dari belakang dan dikeluarkan dari sisi depan.

Bagaimana Python Antrian Bekerja?

Antrian tersebut dapat dengan mudah dibandingkan dengan contoh dunia nyata yaitu antrean orang yang mengantri di loket tiket, orang yang berdiri terlebih dahulu akan mendapatkan tiket terlebih dahulu, disusul orang berikutnya, dan seterusnya. Logika yang sama juga berlaku untuk struktur data antrian.

Berikut adalah representasi diagram antrian:

Python Pekerjaan Antrian

Belakang mewakili titik di mana item dimasukkan ke dalam antrian. Dalam contoh ini, 7 adalah nilai untuk itu.

Depan mewakili titik di mana item dari antrian akan dihapus. Jika Anda menghapus item dari antrian, elemen pertama yang Anda dapatkan adalah 1, seperti yang ditunjukkan pada gambar.

Item 1 adalah yang pertama dimasukkan ke dalam antrian, dan saat dikeluarkan, item tersebut adalah yang pertama keluar. Oleh karena itu antrian tersebut dinamakan FIRST IN FIRST OUT (FIFO)

Python Pekerjaan Antrian

Dalam antrian, item dihapus secara berurutan dan tidak dapat dihapus di antaranya. Anda tidak bisa menghapus item 5 secara acak dari antrian, untuk melakukan itu Anda harus menghapus semua item sebelum 5. Item dalam antrian akan dihapus sesuai urutan penyisipannya.

Jenis Antrian di Python

Pada dasarnya ada dua jenis antrian masuk Python:

  • Antrean Pertama masuk Pertama keluar: Untuk ini, elemen yang masuk terlebih dahulu akan menjadi yang pertama keluar. Untuk bekerja dengan FIFO, Anda harus memanggil Antre() kelas dari modul antrian.
  • Antrian Terakhir Masuk Pertama Keluar: Di sini, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar. Untuk bekerja dengan LIFO, Anda harus memanggil Antrean Lifo() kelas dari modul antrian.

Python Instalasi antrian

Sangat mudah untuk bekerja dengan antrian dengan python. Berikut adalah langkah-langkah yang harus diikuti untuk memanfaatkan antrian dalam kode Anda.

Langkah 1) Anda hanya perlu mengimpor modul antrian, seperti gambar di bawah ini:

import queue

Modul ini tersedia secara default dengan python, dan Anda tidak memerlukan instalasi tambahan apa pun 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 Queue 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 Queue dan LifoQueue

Berikut ini adalah metode penting yang tersedia di dalam kelas Queue dan LifoQueue:

  • taruh(barang): Ini akan memasukkan item ke dalam antrian.
  • mendapatkan(): Ini akan mengembalikan Anda item dari antrian.
  • kosong(): Ini akan mengembalikan nilai true jika antrian kosong dan false jika item ada.
  • qukuran(): mengembalikan ukuran antrian.
  • penuh(): mengembalikan true jika antrean penuh, jika tidak, false.

Contoh Antrian First In First Out

Dalam kasus first in first out, elemen yang masuk lebih dulu akan keluar lebih dulu.

Tambahkan dan item dalam antrian

Mari kita kerjakan contoh untuk menambahkan item ke dalam antrian. Untuk mulai bekerja dengan antrian, pertama-tama impor antrian modul, seperti yang ditunjukkan pada contoh di bawah.

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 antriannya adalah 5, dan tidak akan memakan lebih dari 5 item, dan metode q1.full() akan mengembalikan nilai true. Menambahkan item lagi tidak akan mengeksekusi kode lebih lanjut.

Hapus item dari antrian

Untuk menghapus item dari antrian, Anda dapat menggunakan metode yang disebut get(). Metode ini mengizinkan item dari antrian saat dipanggil.

Contoh berikut menunjukkan cara menghapus item dari antrean.

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 Masuk Pertama Keluar Terakhir

Dalam kasus antrian terakhir yang keluar pertama, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.

Untuk bekerja dengan LIFO, yaitu antrian terakhir yang keluar pertama, kita perlu mengimpor modul antrian dan menggunakan metode LifoQueue().

Tambahkan dan item dalam antrian

Disini kita akan memahami cara menambahkan item ke antrian LIFO.

import queue
q1 = queue.LifoQueue()
q1.put(10)

Anda harus menggunakan metode put() di 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 Antrean

Dalam contoh di atas, kita telah melihat cara menambahkan satu item dan menghapus item untuk FIFO dan LIFOqueue. Sekarang kita akan melihat cara menambahkan lebih dari satu item dan juga menghapusnya.

Tambahkan dan item dalam antrian FIFO

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 

Penyortiran Antrian

Contoh berikut menunjukkan penyortiran antrean. Algoritma yang digunakan untuk penyortiran 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

Revmengantre

Untuk membalikkan antrian, Anda dapat menggunakan antrian lain dan rekursi.

Contoh berikut menunjukkan cara membalikkan antrean.

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

Kesimpulan

  • Antrian adalah wadah yang menyimpan data. Ada dua jenis Antrian, FIFO, dan LIFO.
  • Untuk FIFO (First in First out Queue), elemen yang keluar terlebih dahulu akan menjadi yang pertama keluar.
  • Untuk LIFO (Last in First out Queue), elemen yang dimasukkan terakhir akan keluar lebih dulu.
  • Item dalam antrian ditambahkan menggunakan metode put(item).
  • Untuk menghapus item, metode get() digunakan.