[자료구조] 02. 스택 (Stack) - python
02. 스택 (Stack) - python으로 구현하기
1. 정의
가장 나중에 쌓은 데이터를 가장 먼저 꺼낼 수 있는 구조를 가지고 있다.
즉 LIFO(Last in First out), FILO(First in Last out)구조를 가지고있다.
- push : 데이터를 스택에 넣는다.
- pop : 데이터를 스택에서 꺼낸다.
2. 특징
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식에 쓰임.
- 데이터를 제한적으로 접근할 수 있는 구조이다.(한쪽 끝에서만 자료를 넣거나 뺄 수 있다.)
- 단순하고 빠른 성능을 위해 사용됨.
장점
- 구조가 단순해서, 구현이 쉽다.
- 데이터 저장/읽기 속도가 빠르다.
단점
- 데이터 최대 갯수를 미리 정해야 한다.
- 저장 공간의 낭비가 발생할 수 있다.
3. 코드 구현
list 사용하여 구현하기
- stack_htm class 구현
class stack_htm:
def __init__(self):
self.stack = list()
def push(self, data):
self.stack.append(data)
return self.stack
def pop(self):
try:
temp = self.stack[-1]
del self.stack[-1]
return temp
except:
return self.stack
def ssize(self):
return len(self.stack)
- test
HTM = stack_htm()
# push
HTM.push(1)
HTM.push(2)
HTM.push(3)
HTM.push(4)
HTM.push(5)
[1, 2, 3, 4, 5]
# ssize
print('==>> ssize : ',HTM.ssize())
# pop
for _ in range(HTM.ssize()):
print('==>> pop : ',HTM.pop())
print('==>> ssize : ',HTM.ssize())
==>> ssize : 5
==>> pop : 5
==>> ssize : 4
==>> pop : 4
==>> ssize : 3
==>> pop : 3
==>> ssize : 2
==>> pop : 2
==>> ssize : 1
==>> pop : 1
==>> ssize : 0