Antrian Python: FIFO, LIFO Example

Daftar Isi:

Anonim

Apa itu Antrian Python?

Antrian adalah wadah yang menyimpan data. Data yang dimasukkan pertama kali akan dihapus terlebih dahulu, dan oleh karena itu antrian juga disebut "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 Cara Kerja Antrian Python?
  • Jenis Antrian dengan Python
  • Instalasi antrian Python
  • Metode tersedia di dalam kelas Queue dan LifoQueue
  • Contoh Antrian First In First Out
  • Contoh antrian Last In First Out
  • Tambahkan lebih dari 1 item dalam Antrian
  • Mengurutkan Antrian
  • Membalikkan Antrian

Bagaimana Cara Kerja Antrian Python?

Antrian dapat dengan mudah dibandingkan dengan contoh dunia nyata antrian orang yang menunggu dalam antrian di loket tiket, orang yang berdiri lebih dulu akan mendapatkan tiket terlebih dahulu, diikuti oleh orang berikutnya dan seterusnya. Logika yang sama juga berlaku untuk struktur data antrian.

Berikut adalah representasi diagram dari antrian:

Bagian 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. Karenanya 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 antrian, untuk itu Anda harus menghapus semua item sebelum 5. Item dalam antrian akan dihapus sesuai urutan penyisipannya.

Jenis Antrian dengan Python

Terutama ada dua jenis antrian di Python:

  • First in First out Queue: Untuk ini, elemen yang keluar lebih dulu akan menjadi yang pertama keluar.

    Untuk bekerja dengan FIFO, Anda harus memanggil kelas Queue () dari modul antrian.

  • Last in First out Queue: Di sini, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.

    Untuk bekerja dengan LIFO, Anda harus memanggil kelas LifoQueue () dari modul antrian.

Instalasi antrian Python

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 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 (pertama masuk pertama keluar) dan LIFO (terakhir masuk pertama keluar).

Langkah 2) Untuk bekerja dengan antrian FIFO, panggil kelas Antrian menggunakan modul antrian yang diimpor seperti yang ditunjukkan di bawah ini:

import queueq1 = queue.Queue()

Langkah 3) Untuk bekerja dengan antrian LIFO, panggil kelas LifoQueue () seperti yang ditunjukkan di bawah ini:

import queueq1 = queue.LifoQueue()

Metode tersedia di dalam kelas Queue dan LifoQueue

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

  • put (item): Ini akan menempatkan item di dalam antrian.
  • get (): Ini akan mengembalikan Anda item dari antrian.
  • kosong (): Ini akan mengembalikan nilai benar jika antrian kosong dan salah jika ada item.
  • qsize (): mengembalikan ukuran antrian.
  • full (): mengembalikan nilai true jika antrian penuh, jika tidak salah.

Contoh Antrian First In First Out

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

Tambahkan dan item dalam antrian

Mari kita mengerjakan contoh untuk menambahkan item dalam antrian. Untuk mulai bekerja dengan antrian, impor dulu antrian modul, seperti yang ditunjukkan pada contoh di bawah ini.

Untuk menambahkan item, Anda dapat menggunakan metode put () seperti yang ditunjukkan pada contoh:

import queueq1 = 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 queueq1 = 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 itu tidak akan mengambil lebih dari 5 item, dan metode q1.full () akan mengembalikan true. Menambahkan item lagi tidak akan mengeksekusi kode lebih jauh.

Hapus item dari antrian

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

Contoh berikut menunjukkan cara menghapus item dari antrian.

import queueq1 = 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 Last In First Out

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

Untuk bekerja dengan LIFO, yaitu yang terakhir dalam 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 queueq1 = 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 queueq1 = 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 masukkan ke dalam FIFOqueue

import queueq1 = 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 queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.

Keluaran:

The value is 0The value is 1The value is 2The value is 3The value is 4The value is 5The value is 6The value is 7The value is 8The value is 9The value is 10The value is 11The value is 12The value is 13The value is 14The value is 15The value is 16The value is 17The value is 18The value is 19

Tambahkan dan item dalam LIFOqueue

import queueq1 = 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 queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue. 

Keluaran:

The value is 19The value is 18The value is 17The value is 16The value is 15The value is 14The value is 13The value is 12The value is 11The value is 10The value is 9The value is 8The value is 7The value is 6The value is 5The value is 4The value is 3The value is 2The value is 1The value is 0

Mengurutkan Antrian

Contoh berikut menunjukkan pengurutan antrian. Algoritma yang digunakan untuk pengurutan adalah bubble sort.

import queueq1 = queue.Queue()#Addingitems to the queueq1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)#using bubble sort on the queuen = q1.qsize()for i in range(n):x = q1.get() # the element is removedfor j in range(n-1):y = q1.get() # the element is removedif x> y :q1.put(y) #the smaller one is put at the start of the queueelse:q1.put(x) # the smaller one is put at the start of the queuex = y # the greater one is replaced with x and compared again with nextelementq1.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 membalik antrian.

Contoh:

import queueq1 = 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 recursionq2dest.put(buffer)return q2destq2dest = 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 keluar lebih dulu akan menjadi yang pertama keluar.
  • Untuk LIFO (Last in First out Queue), elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.
  • Sebuah item dalam antrian ditambahkan menggunakan metode put (item).
  • Untuk menghapus item, metode get () digunakan.