เมื่อจำเป็นต้องใช้โครงสร้างข้อมูลคิวโดยใช้รายการที่เชื่อมโยง วิธีการเพิ่มองค์ประกอบ (การดำเนินการเข้าคิว) ในรายการที่เชื่อมโยง และวิธีการลบ (การดำเนินการยกเลิกคิว) องค์ประกอบของรายการที่เชื่อมโยงจะถูกกำหนด
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
ตัวอย่าง
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' จะลบองค์ประกอบออกจากคิว
-
ตัวเลือก 'ออก' หลุดออกมาจากวง
-
ขึ้นอยู่กับอินพุต/ตัวเลือกโดยผู้ใช้ การดำเนินการตามลำดับจะดำเนินการ
-
เอาต์พุตนี้จะแสดงบนคอนโซล