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:
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)
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.