GROWNFRESH
2021. 7. 30. 08:20
스택 : LIFO 정책을 갖는다.
대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
push : 데이터 스택에 넣기
pop : 데이터 스택에서 꺼내기
재귀함수와 스택
아래는 운영체제 과목에서 깊게 설명해야 이해할 수 있는 부분이다. 프로세스 스택의 구조까지 이해할 필요는 없다.
다만, 함수 위에 함수가 호출되면 스택같은 구조로 함수가 쌓이고, 맨위 함수가 끝나면 그 다음( 그 아래) 함수가 불려진다는 프로세스만 이해하면 된다.
# 재귀 함수
def recursive(data):
if data < 0:
print ("ended")
else:
print(data)
recursive(data - 1)
print("returned", data)
recursive(4)
4
3
2
1
0
ended
returned 0
returned 1
returned 2
returned 3
returned 4
자료 구조 장단점
장점
- 구조가 단순해서 구현이 쉽다.
- 데이터 저항, 읽기의 속도가 빠르다.
단점 (일반적 스택 구현 시)
- 데이터 최대 개수를 미리 정해야 한다.
(파이썬의 경우 재귀 함수는 최대 1000번까지 호출 가능)
- 저장 공간 낭비 발생할 수 있음
( 최대 개수 만큼 저장공간을 확보해야 하므로)
( 링크드 리스트 등으로 구현하면 위같은 단점은 발생x)