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

โปรแกรม Python สร้าง Queue ด้วย Linked List


ภาพรวม

เมื่อต้องการสร้างโครงสร้างข้อมูล Queue โดยใช้ Linked List จะนิยามเมธอดเพิ่ม (enqueue) และลบ (dequeue) องค์ประกอบ

ตัวอย่างโค้ด

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class Queue_structure:
    def __init__(self):
        self.head = None
        self.last = None

    def enqueue_operation(self, data):
        if self.last is None:
            self.head = Node(data)
            self.last = self.head
        else:
            self.last.next = Node(data)
            self.last = self.last.next

    def dequeue_operation(self):
        if self.head is None:
            return None
        else:
            val_returned = self.head.data
            self.head = self.head.next
            return val_returned

my_instance = Queue_structure()
while True:
    print('enqueue ')
    print('dequeue')
    print('quit')
    my_input = input('What operation would you like to perform ? ').split()
    operation = my_input[0].strip().lower()
    if operation == 'enqueue':
        my_instance.enqueue_operation(int(my_input[1]))
    elif operation == 'dequeue':
        dequeued = my_instance.dequeue_operation()
        if dequeued is None:
            print('The queue is empty.')
        else:
            print('The deleted element is : ', int(dequeued))
    elif operation == 'quit':
        break

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

enqueue  dequeue quit
What operation would you like to perform ? enqueue 45
enqueue  dequeue quit
What operation would you like to perform ? enqueue 12
enqueue  dequeue quit
What operation would you like to perform ? dequeue
The deleted element is : 45
enqueue  dequeue quit
What operation would you like to perform ? quit

คำอธิบาย

  • สร้างคลาส Node
  • สร้างคลาส Queue_structure พร้อมแอตทริบิวต์ที่จำเป็น
  • เมธอด __init__ เริ่มต้นโหนดแรก (head) เป็น None
  • เมธอด enqueue_operation เพิ่มค่าเข้า Queue
  • เมธอด dequeue_operation ลบค่าจาก Queue และคืนค่าที่ลบ
  • สร้างอินสแตนซ์ของ Queue_structure
  • ให้ตัวเลือก 3 อย่าง: enqueue, dequeue, quit
  • ตัวเลือก enqueue เพิ่มค่าเข้า Stack
  • ตัวเลือก dequeue ลบองค์ประกอบจาก Queue
  • ตัวเลือก quit ออกจากลูป
  • ตาม input/choice ของผู้ใช้ จะทำการดำเนินการตามลำดับ
  • แสดงผลลัพธ์บนคอนโซล