Published: Jan 20, 2020 by Dev-hwon
Stack (스택)
- 배열의 끝에서만 데이터를 접근할 수 있는 선형 자료구조
- 배열 인덱스 접근이 제한
- 후입선출(LIFO) 구조
- 시간복잡도 O(1)
1. 스택 구조
-
스택은 LIFO(Last In, Fisrt Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름
- 대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- 깊이 우선 탐색(DFS)에 유용하게 사용
- 주요 기능
- push: 스택 맨 끝에 항목을 삽입
- pop: 스택 맨 끝 항목을 반환하는 동시에 제거
- top/peek: 스택 맨 끝 항목을 조회
- empty: 스택이 비어 있는지 확인
- size: 스택 크기를 확인
2. 스택 구조와 프로세스 스택
- 스택 구조는 프로세스 실행 구조의 가장 기본
3. 장단점
장점 | 단점 |
---|---|
* 구조가 단순해서 구현이 쉬움 * 데이터 저장/읽기 속도가 빠름 |
* 데이터의 최대 갯수를 미리 정해야함 * 저장 공간의 낭비가 발생할 수 있음 |
Code
class Stack(object):
def __init__(self):
self.items = []
def isEmpty(self):
return not bool(self.items)
def push(self, value):
self.items.append(value)
def pop(self):
value = self.items.pop()
if value is not None:
return value
else:
print('Stack is empty.')
def size(self):
if self.items:
return self.items[-1]
else:
print('Stack is empty.')
def __repr__(self):
return repr(self.items)