เมื่อต้องการนำ Queue มาใช้งานใน Python สามารถสร้างคลาส Queue ที่มีเมธอด enqueue (เพิ่ม), dequeue (ลบ), และตรวจสอบว่าว่างหรือไม่
โค้ดตัวอย่าง
class Queue_struct:
def __init__(self):
self.items = []
def check_empty(self):
return self.items == []
def enqueue_elem(self, data):
self.items.append(data)
def dequeue_elem(self):
return self.items.pop(0)
my_instance = Queue_struct()
while True:
print('Enqueue ')
print('Dequeue')
print('Quit')
my_input = input('What operation would you perform? ').split()
operation = my_input[0].strip().lower()
if operation == 'enqueue':
my_instance.enqueue_elem(int(my_input[1]))
elif operation == 'dequeue':
if my_instance.check_empty():
print('The queue is empty...')
else:
print('The deleted value is:', my_instance.dequeue_elem())
elif operation == 'quit':
break
ผลลัพธ์ตัวอย่าง
EnqueueDequeue Quit What operation would you perform? Enqueue 45 Enqueue Dequeue Quit What operation would you perform? Enqueue 56 Enqueue Dequeue Quit What operation would you perform? Enqueue 89 Enqueue Dequeue Quit What operation would you perform? Dequeue The deleted value is: 45 Enqueue Dequeue Quit What operation would you perform? Dequeue The deleted value is: 56 Enqueue Dequeue Quit What operation would you perform? Quit
คำอธิบาย
คลาส
Queue_structใช้ list เป็นโครงสร้างข้อมูลภายในenqueue_elem: เพิ่มข้อมูลท้ายลิสต์ (O(1))dequeue_elem: ลบข้อมูลหัวลิสต์pop(0)(O(n) เพราะต้องเลื่อน index ทุกตัว)โปรแกรมรับคำสั่งจากผู้ใช้แบบ interactive
แนะนำ: สำหรับการใช้งานจริง ควรใช้ collections.deque ซึ่งมี append() และ popleft() ทำงานใน O(1) ทั้งคู่
from collections import deque q = deque() q.append(1) # enqueue q.popleft() # dequeue