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

예제와 함께 Python의 스택 설명

<시간/>

스택은 후입선출에서 작동하는 선형 데이터 구조입니다. 메커니즘(LIFO). 스택에 가장 먼저 들어가는 요소가 마지막으로 처리됩니다.

예시

스택 데이터 구조는 접시 스택의 예를 통해 이해할 수 있습니다.

접시가 하나 둘 쌓여 있습니다. 첫 번째 접시나 접시는 더미의 맨 아래에 있고 마지막으로 놓인 접시는 더미 또는 더미의 맨 위에 있습니다. 접시가 필요할 때마다 맨 마지막에 삽입되거나 배치되는 스택의 맨 위에 있는 접시를 선택합니다. 먼저 놓은 접시가 마지막 접시가 됩니다. 따라서 LAST IN FIRST OUT 메커니즘을 따릅니다.

Python에서 스택 구현

Python의 스택은 다른 선형 데이터 구조 또는 Python 라이브러리의 내장 모듈을 사용하여 다양한 방식으로 구현할 수 있습니다.

방법 1 - 목록을 사용하여 구현

Python의 스택은 list를 사용하여 구현할 수 있습니다. 그러나 목록을 사용하여 스택을 구현하는 것은 그다지 효율적이지 않으므로 권장하지 않습니다.

관련 작업

추가() − 이 함수는 스택의 끝에 요소를 추가합니다.

팝() − 이 함수는 스택의 마지막 또는 맨 위 요소를 제거하고 반환합니다. 이 함수는 LIFO 순서로 요소를 팝합니다.

예시

stack=[]
stack.append(1)
stack.append(2)
stack.append(3)
print("Intial Stack",stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements",stack)

출력

Intial Stack [1, 2, 3]
Element popped from the stack
3
2
Stack after popping some elements [1]

스택이 비어 있으면 더 이상 요소를 제거할 수 없습니다. 그렇게 하면 예외가 발생합니다.

stack.pop()
IndexError: pop from empty list

방법 2 - queue.LifoQueue를 사용하여 구현

이것은 파이썬에서 내장 모듈을 사용하여 스택을 구현하는 방법입니다. 대기열에서 LifoQueue를 가져와야 합니다. 특정 크기로 LifoQueue 또는 스택을 초기화할 수 있습니다. 크기가 0이면 무한 스택을 의미합니다.

관련 작업

최대 크기 - 스택에 허용되는 최대 요소 수

get() - 스택에서 마지막 또는 맨 위 요소를 제거하고 반환합니다. 스택이 비어 있으면 스택에 요소가 하나 이상 있을 때까지 기다립니다.

get_nowait() - 스택에서 마지막 요소를 제거하고 반환합니다. 스택이 비어 있으면 예외를 발생시킵니다.

넣다(항목) - 스택 끝에 요소를 추가합니다. 스택이 가득 차면 빈 슬롯을 사용할 수 있을 때까지 기다립니다.

put_nowait(항목) - 스택의 끝에 요소를 추가합니다. 스택이 가득 차면 예외를 발생시킵니다.

전체() - 스택이 가득 차면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

빈() - 스택이 비어 있으면 True를 반환하고, 그렇지 않으면 거짓을 반환

qsize() - 스택에 있는 요소의 수를 반환합니다.

예시

from queue import LifoQueue
s=LifoQueue(maxsize=3)
s.put(1)
s.put(2)
s.put(3)
print("Is stack full",s.full())
print("Element popped from the stack")
print(s.get())
print(s.get())
print("Number of elements in stack",s.qsize())
print("Is stack empty",s.empty())

출력

Is stack full True
Element popped from the stack
3
2
Number of elements in stack 1
Is stack empty False

방법 3:collections.deque를 사용하여 구현

이것은 파이썬에서 스택을 구현하는 또 다른 방법입니다. 컬렉션 모듈에서 deque를 가져와야 합니다.

관련 작업

추가() − 이 함수는 스택의 끝에 요소를 추가합니다.

팝() − 이 함수는 O(1) 시간 복잡도에서 스택의 마지막 요소를 제거하고 반환합니다.

예시

from collections import deque
stack=deque()
stack.append(1)
stack.append(2)
stack.append(3)
print("Intial stack: ",stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements: ",stack)

출력

Intial stack: deque([1, 2, 3])
Element popped from the stack
3
2
Stack after popping some elements: deque([1])

빈 데크에서 pop() 함수를 사용하면 예외가 발생합니다.