Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python ใช้งาน Queue (คิว) แบบ Interactive

เมื่อต้องการนำ 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

ผลลัพธ์ตัวอย่าง

Enqueue 
Dequeue
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