해당 시리즈의 모든 포스팅 내용은 패스트캠퍼스 <개발자 취업 합격 패스 With 코딩테스트, 기술면접 초격차 패키지> 의 이준희 강사님의 '자료구조 파트' 강의 내용을 정리한 것입니다.
스택도 큐와 마찬가지로 LIFO, FILO 등의 여러 정책을 따른다. 가장 대표적으로 쓰이는 정책은 LIFO로, 좁은 상자에 블록을 쌓는 동작원리와 유사하다. 가장 밑바닥부터 블록을 차례로 쌓은 후, 다시 꺼낼 때는 가장 마지막에 넣은 블록부터 꺼낸다.
이와 유사하게, 스택은 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조이다.
스택에 데이터를 넣는 기능이다.
스택에서 데이터를 꺼내는 기능이다.
그림으로 이해해보자.
프로세스의 함수 동작방식에서 스택이 사용된다. (프로세스 : 실행중인 프로그램)
>>> 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
return 0
return 1
return 2
return 3
return 4
** process stack : 함수와 관련된 정보들이 쌓이는 공간
return 0 부터 이해가 안간다 ....ㅠㅅㅠ
## 빈 리스트 생성
>>> stack_list = list()
## 1. push 구현
>>> def push(data):
stack_list.append(data)
## 2. pop 구현 (LIFO 정책에 사용)
>>> def pop():
data = stack_list[-1] # 꺼낼 원소를 data라는 변수에 지정
del stack_list[-1] # 리턴값이 반복되지 않도록 마지막 요소를 삭제해준다
return data
## 0부터 9까지의 수로 스택 생성
>>> for index in range(10):
push(index)
## 생성된 스택의 길이를 출력해보자.
>>> len(stack_list)
10
>>> pop() # 가장 마지막에 넣은 요소가 출력된다.
9