Python
3. 스택(Stack)
Eva_0401
2020. 3. 31. 16:40
-
데이터를 제한적으로 접근할 수 있는 구조
- 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
-
가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조
- 큐: FIFO (줄서기)
- 스택: LIFO (책쌓기)
-
대표적인 스택의 활용 : 컴퓨터 내부의 프로세스 구조의 함수 동작방식
-
주요 기능
- push() : 데이터 넣기
- pop() : 데이터 빼기
-
장점
- 구조가 단순해서, 구현이 쉽다.
- 데이터 저장/읽기 속도가 빠르다.
-
단점 (일반적인 스택 구현시)
- 데이터 최대 갯수를 미리 정해야 한다.
- 파이썬의 경우 재귀 함수는 1000번까지만 호출이 가능함
- 저장 공간의 낭비가 발생할 수 있음
- 미리 최대 갯수만큼 저장 공간을 확보해야 함
- 데이터 최대 갯수를 미리 정해야 한다.
스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적
연습
> 0이 되어 끝나면 마지막 print("returned",data)가 시행됨
data_stack = list()
data_stack.append(1) #1 삽입
data_stack.append(2) #2 삽입
--------------------------------
data_stack # [1,2] 출력
--------------------------------
data_stack.pop() #2 출력
---------------2----------------
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1] # 맨 끝
del stack_list[-1]
return data
--------------------------------
for index in range(10):
push(index)
--------------------------------
pop() # 결과 : 9