Tutorial Struktur Data Antrian Python
Kuasai operasi antrian FIFO dengan Python. Jalankan dan jalankan contoh antrian interaktif kami yang menampilkan metode enqueue dan dequeue.
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.
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)}")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
Menerapkan tumpukan LIFO dengan Python. Jalankan contoh kode tumpukan interaktif kami untuk menguasai batas push, pop, peek, dan kapasitas.
Implementasi Daftar Tertaut Tunggal PythonPelajari cara mengimplementasikan daftar tertaut tunggal dengan Python. Jelajahi alokasi memori dinamis, operasi node, penyisipan, traversal, dan penghapusan.