Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để triển khai cấu trúc dữ liệu hàng đợi bằng cách sử dụng danh sách được liên kết

Khi được yêu cầu triển khai cấu trúc dữ liệu hàng đợi bằng danh sách được liên kết, phương pháp thêm phần tử (thao tác xếp hàng) vào danh sách liên kết và phương pháp xóa (thao tác xếp hàng) các phần tử của danh sách liên kết được xác định.

Dưới đây là một minh chứng cho điều tương tự -

Ví dụ

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

Đầu ra

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

Giải thích

  • Lớp 'Node' được tạo.

  • Một lớp ‘Queue_ architects’ khác với các thuộc tính bắt buộc được tạo.

  • Nó có chức năng ‘init’ được sử dụng để khởi tạo phần tử đầu tiên, tức là ‘head’ thành ‘None’.

  • Một phương thức có tên là enqueue_operation ’được xác định, giúp thêm một giá trị vào hàng đợi.

  • Một phương thức khác có tên là ‘dequeue_operation’ được xác định, giúp xóa một giá trị khỏi hàng đợi và trả về giá trị đã xóa.

  • Một phiên bản của ‘Queue_ architecture’ được tạo.

  • Ba tùy chọn được đưa ra, chẳng hạn như "enqueue", "dequeue" và "thoát".

  • Tùy chọn "enqueue" thêm một giá trị cụ thể vào ngăn xếp.

  • Tùy chọn "dequeue" xóa phần tử khỏi hàng đợi.

  • Tùy chọn 'thoát' không có trong vòng lặp.

  • Dựa trên đầu vào / lựa chọn của người dùng, các hoạt động tương ứng được thực hiện.

  • Đầu ra này được hiển thị trên bảng điều khiển.