단일 큐를 사용하여 스택을 구현해야 하는 경우 Queue_structure 클래스와 함께 'Stack_structure' 클래스가 필요합니다. 스택과 큐에서 각각 값을 추가 및 삭제하기 위해 이러한 클래스에 각각의 메서드가 정의되어 있습니다.
아래는 동일한 데모입니다 -
예
class Stack_structure: def __init__(self): self.q = Queue_structure() def check_empty(self): return self.q.check_empty() def push_val(self, data): self.q.enqueue_operation(data) def pop_val(self): for _ in range(self.q.size_calculate() - 1): dequeued = self.q.dequeue_operation() self.q.enqueue_operation(dequeued) return self.q.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('The stack is empty.') else: print('The deleted value is : ', my_instance.pop_val()) elif operation == 'quit': break
출력
Menu push <value> pop quit What operation would you like to perform ? push 89 What operation would you like to perform ? push 43 What operation would you like to perform ? push 76 What operation would you like to perform ? push 56 What operation would you like to perform ? pop The deleted value is : 56 What operation would you like to perform ? quit
설명
-
빈 목록을 초기화하는 'Stack_structure' 클래스가 생성됩니다.
-
스택이 비어 있는지 확인하기 위해 'check_empty' 메서드가 정의되어 있습니다.
-
스택에 요소를 추가하는 'push_val'이라는 또 다른 메서드가 정의되어 있습니다.
-
스택에서 요소를 삭제하는 'pop_val'이라는 또 다른 메서드가 정의되어 있습니다.
-
빈 목록을 초기화하고 목록의 크기를 0으로 지정하는 'Queue_structure' 클래스가 생성됩니다.
-
대기열이 비어 있는지 확인하기 위해 'check_empty' 메서드가 정의되어 있습니다.
-
큐에 요소를 추가하는 'enqueue_operation'이라는 또 다른 메서드가 정의되어 있습니다.
-
큐에서 요소를 삭제하는 'dequeue_operation'이라는 또 다른 메서드가 정의되어 있습니다.
-
큐의 크기를 결정하는 'size_calculate'라는 또 다른 메서드가 정의되어 있습니다.
-
이 'Stack_structure'의 인스턴스가 정의됩니다.
-
메뉴, 푸시, 팝업 및 종료의 4가지 옵션이 제공됩니다.
-
사용자가 제공한 입력에 따라 스택의 요소에 대해 작업이 수행됩니다.
-
출력은 콘솔에 표시됩니다.