Tutorial Struktur Data Antrian Python

Kuasai operasi antrian FIFO dengan Python. Jalankan dan jalankan contoh antrian interaktif kami yang menampilkan metode enqueue dan dequeue.

Coba di Editor

Ikhtisar

Antrian adalah struktur data linier yang beroperasi berdasarkan prinsip Masuk Pertama, Keluar Pertama (FIFO). Elemen ditambahkan di belakang (enqueue) dan dihapus dari depan (dequeue), seperti garis kasir di toko.

Antrian sangat penting dalam ilmu komputer untuk memproses tugas sesuai urutan kedatangannya. Mereka bertindak sebagai penyangga yang memisahkan proses produsen dan konsumen.

Python menyediakan berbagai cara untuk membuat antrean: daftar dasar, modul `collections.deque` untuk operasi cepat thread-safe, dan modul `queue.Queue` yang dirancang khusus untuk aplikasi multi-thread.

Kode & Output Eksekusi

Antrean FIFO interaktif yang dibuat menggunakan collections.deque untuk operasi penghapusan depan yang efisien.

queue_demo.py
Coba di Editor
from collections import deque

class Queue:
    def __init__(self):
        self.buffer = deque()
        
    def enqueue(self, item):
        self.buffer.append(item)
        print(f"Enqueued: {item}")
        
    def dequeue(self):
        if self.is_empty():
            return "Underflow: Queue is empty"
        dequeued = self.buffer.popleft()
        print(f"Dequeued: {dequeued}")
        return dequeued
        
    def is_empty(self):
        return len(self.buffer) == 0
        
    def size(self):
        return len(self.buffer)

# Test the Queue
q = Queue()
q.enqueue("Customer 1")
q.enqueue("Customer 2")
q.enqueue("Customer 3")

print(f"Queue Size: {q.size()}")
q.dequeue()
q.dequeue()

print(f"Remaining in Queue: {list(q.buffer)}")
Keluaran Terminal
Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']

Implementasi Langkah demi Langkah

  • Menangani permintaan asinkron dalam kerangka web server
  • Antrian penjadwalan pekerjaan dalam sistem operasi
  • Broker pesan dan buffer antrian (seperti RabbitMQ atau Redis)

Pertanyaan yang Sering Diajukan

Mengapa tidak menggunakan list.pop(0) untuk melakukan dequeue dengan Python?

Penggunaan `list.pop(0)` lambat karena memerlukan perpindahan semua elemen berikutnya dalam memori satu indeks ke kiri, sehingga menghasilkan kinerja O(n). Sebaliknya, `deque.popleft()` berjalan dalam waktu konstan O(1).

Apa itu Antrian Prioritas?

Antrean prioritas adalah variasi di mana elemen dilayani berdasarkan prioritas terkait, bukan berdasarkan urutan kedatangan. Python mengimplementasikan ini melalui modul `heapq`.

Topik Terkait