재귀를 이용하여 스택 데이터 구조를 반전시킬 필요가 있을 때 스택의 요소를 출력, 삭제, 값을 추가하는 메소드 외에 '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'이 호출됩니다.