Khi bắt buộc phải triển khai một ngăn xếp bằng cách sử dụng hai hàng đợi, thì cần có một lớp ‘Cấu trúc ngăn xếp’ cùng với một lớp Cấu trúc hàng đợi. Các phương thức tương ứng được định nghĩa trong các lớp này để thêm và xóa các giá trị khỏi ngăn xếp và hàng đợi tương ứng.
Dưới đây là một minh chứng về điều tương tự -
Ví dụ
class Stack_structure: def __init__(self): self.queue_1 = Queue_structure() self.queue_2 = Queue_structure() def check_empty(self): return self.queue_2.check_empty() def push_val(self, data): self.queue_1.enqueue_operation(data) while not self.queue_2.check_empty(): x = self.queue_2.dequeue_operation() self.queue_1.enqueue_operation(x) self.queue_1, self.queue_2 = self.queue_2, self.queue_1 def pop_val(self): return self.queue_2.dequeue_operation() class Queue_structure: def __init__(self): self.items = [] self.size = 0 def check_empty(self): return self.items == [] def enqueue_operation(self, data): self.size += 1 self.items.append(data) def dequeue_operation(self): self.size -= 1 return self.items.pop(0) def size_calculate(self): return self.size my_instance = Stack_structure() print('Menu') print('push <value>') print('pop') print('quit') while True: my_input = input('What operation would you like to perform ? ').split() operation = my_input[0].strip().lower() if operation == 'push': my_instance.push_val(int(my_input[1])) elif operation == 'pop': if my_instance.check_empty(): print('Stack is empty.') else: print('The deleted value is: ', my_instance.pop_val()) elif operation == 'quit': break
Đầu ra
Menu push <value> pop quit What operation would you like to perform ? push 56 What operation would you like to perform ? push 34 What operation would you like to perform ? push 78 What operation would you like to perform ? push 90 What operation would you like to perform ? pop The deleted value is: 90 What operation would you like to perform ? quit
Giải thích
-
Một lớp ‘Stack_ Structure’ được tạo để khởi tạo một danh sách trống.
-
Phương thức ‘check_empty’ được xác định để xem liệu ngăn xếp có trống không.
-
Một phương thức khác có tên là ‘push_val’ được xác định để thêm các phần tử vào ngăn xếp.
-
Một phương thức khác có tên là ‘pop_val’ được xác định để xóa các phần tử khỏi ngăn xếp.
-
Một lớp ‘Queue_ architects’ được tạo để khởi tạo một danh sách trống và gán kích thước của danh sách là 0.
-
Phương thức ‘check_empty’ được xác định để xem liệu hàng đợi có trống hay không.
-
Một phương thức khác có tên là ‘enqueue_operation’ được định nghĩa để thêm các phần tử vào hàng đợi.
-
Một phương thức khác có tên là ‘dequeue_operation’ được định nghĩa để xóa các phần tử khỏi hàng đợi.
-
Một phương thức khác có tên là ‘size_calculate’ được xác định, xác định kích thước của hàng đợi.
-
Hai trường hợp của ‘Queue_ architecture’ này được xác định.
-
Bốn tùy chọn được đưa ra - Menu, đẩy, bật và thoát.
-
Dựa trên đầu vào do người dùng cung cấp, các hoạt động được thực hiện trên các phần tử của ngăn xếp.
-
Đầu ra được hiển thị trên bảng điều khiển.