Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

재귀를 사용하여 스택을 뒤집는 Python 프로그램

<시간/>

재귀를 이용하여 스택 데이터 구조를 반전시킬 필요가 있을 때 스택의 요소를 출력, 삭제, 값을 추가하는 메소드 외에 'stack_reverse' 메소드가 정의되어 있습니다.

아래는 동일한 데모입니다 -

예시

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()

출력

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

설명

  • 빈 목록을 초기화하는 'Stack_structure' 클래스가 생성됩니다.

  • 스택이 비어 있는지 확인하기 위해 'check_empty' 메서드가 정의되어 있습니다.

  • 스택에 요소를 추가하는 'push_val'이라는 또 다른 메서드가 정의되어 있습니다.

  • 스택에서 요소를 삭제하는 'pop_val'이라는 또 다른 메서드가 정의되어 있습니다.

  • 스택의 요소를 인쇄하는 데 도움이 되는 'print_it'이라는 메서드가 정의되어 있습니다.

  • 기본적으로 맨 위에 추가하는 대신 스택 맨 아래에 요소를 추가하는 'insert_bottom'이라는 메서드가 정의되어 있습니다.

  • 'stack_reverse'라는 또 다른 메서드가 정의되어 주어진 스택을 뒤집을 수 있습니다.

  • 이 'Stack_structure'의 인스턴스가 정의됩니다.

  • 스택의 요소는 사용자로부터 가져옵니다.

  • 반복되고 스택에 값을 추가하고 콘솔에 인쇄하기 위해 메서드가 호출됩니다.

  • 이제 이 목록에서 'stack_reverse'가 호출됩니다.

  • 콘솔에 역 스택을 표시하기 위해 'print_it'이 호출됩니다.