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

Chương trình Python để đảo ngược một ngăn xếp bằng cách sử dụng Đệ quy

Khi cần đảo ngược cấu trúc dữ liệu ngăn xếp bằng cách sử dụng đệ quy, phương thức ‘stack_reverse’, ngoài các phương thức thêm giá trị, xóa giá trị và in các phần tử của ngăn xếp được xác định.

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

Ví dụ

class Stack_structure:
   def __init__(self):
      self.items = []

   def check_empty(self):
      return self.items == []

   def push_val(self, data):
      self.items.append(data)

   def pop_val(self):
      return self.items.pop()

   def print_it(self):
      for data in reversed(self.items):
         print(data)

def insert_bottom(instance, data):
   if instance.check_empty():
      instance.push_val(data)
   else:
      deleted_elem = instance.pop_val()
      insert_bottom(instance, data)
      instance.push_val(deleted_elem)

def stack_reverse(instance):
   if not instance.check_empty():
      deleted_elem = instance.pop_val()
      stack_reverse(instance)
      insert_bottom(instance, deleted_elem)

my_instance = Stack_structure()
data_list = input('Enter the elements to add to the stack: ').split()
for data in data_list:
   my_instance.push_val(int(data))

print('The reversed stack is:')
my_instance.print_it()
stack_reverse(my_instance)
print('The stack is:')
my_instance.print_it()

Đầu ra

Enter the elements to add to the stack: 23 56 73 81 8 9 0
The reversed stack is:
0
9
8
81
73
56
23
The stack is:
23
56
73
81
8
9
0

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.

  • Phương thức có tên ‘print_it’ được định nghĩa để giúp in các phần tử của ngăn xếp.

  • Phương thức có tên ‘insert_bottom’ được xác định, phương thức này thêm phần tử vào cuối ngăn xếp, thay vì thêm vào đầu theo mặc định.

  • Một phương thức khác có tên là ‘stack_reverse’ được xác định, giúp đảo ngược một ngăn xếp đã cho.

  • Một phiên bản của 'Stack_ Structure' này được xác định.

  • Các phần tử của ngăn xếp được lấy từ người dùng.

  • Nó được lặp đi lặp lại và các phương thức được gọi để thêm giá trị vào ngăn xếp và in nó trên bảng điều khiển.

  • Bây giờ, ‘stack_reverse’ được gọi trong danh sách này.

  • ‘Print_it’ được gọi để hiển thị ngăn xếp đã đảo ngược trên bảng điều khiển.