เมื่อจำเป็นต้องใช้โครงสร้างข้อมูลคิวโดยใช้รายการที่เชื่อมโยง วิธีการเพิ่มองค์ประกอบ (การดำเนินการเข้าคิว) ในรายการที่เชื่อมโยง และวิธีการลบ (การดำเนินการยกเลิกคิว) องค์ประกอบของรายการที่เชื่อมโยงจะถูกกำหนด
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
ตัวอย่าง
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 <value>') 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 <value> dequeue quit What operation would you like to perform ? enqueue 45 enqueue <value> dequeue quit What operation would you like to perform ? enqueue 12 enqueue <value> dequeue quit What operation would you like to perform ? dequeue The deleted element is : 45 enqueue <value> dequeue quit What operation would you like to perform ? quit
คำอธิบาย
-
สร้างคลาส "โหนด" แล้ว
-
สร้างคลาส 'Queue_structure' อีกคลาสที่มีแอตทริบิวต์ที่จำเป็น
-
มีฟังก์ชัน 'init' ที่ใช้ในการเริ่มต้นองค์ประกอบแรก นั่นคือ 'head' เป็น 'None'
-
มีการกำหนดเมธอดที่ชื่อว่า enqueue_operation ซึ่งช่วยเพิ่มมูลค่าให้กับคิว
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า 'dequeue_operation' ซึ่งช่วยลบค่าออกจากคิวและส่งกลับค่าที่ลบไป
-
อินสแตนซ์ของ 'Queue_structure' จะถูกสร้างขึ้น
-
มีสามตัวเลือกให้เลือก เช่น 'enqueue', 'dequeue' และ 'quit'
-
ตัวเลือก 'enqueue' จะเพิ่มค่าเฉพาะให้กับสแต็ก
-
ตัวเลือก 'dequeue' จะลบองค์ประกอบออกจากคิว
-
ตัวเลือก 'ออก' หลุดออกมาจากวง
-
ขึ้นอยู่กับอินพุต/ตัวเลือกโดยผู้ใช้ การดำเนินการตามลำดับจะดำเนินการ
-
เอาต์พุตนี้จะแสดงบนคอนโซล