영어로 Stack = 쌓다 는 의미를 가지고있다.
프로그래밍에서 목록 or 리스트에서 접근이 한 쪽에서만 가능한 구조이다.
LIFO(Last-in, First Out)이 기본 원리이다.
python은 List가 스택으로 사용가능하도록 구현되어 있다.
class Stack(list) :
push = list.append
# append : list에 하나의 요소를 추가하는 함수 = stack의 push와 100% 동일하다.
def peek(self):
return self[-1]
# peek : stack의 가장 마지막에 있는 데이터를 보여주기 위함, index -1 값을 집어넣어준다.
# pop : list의 내장 함수로 이미 존재하므로 정의 x
s = Stack()
s.push(1)
s.push(5)
s.push(10)
print("my stack is" , s)
s.pop()을 사용하면 마지막 value인 10이 제거된 것을 볼 수 있다.
다시 한 번 stack을 확인하면 10은 존재하지 않는다는 것을 알 수 있다.
s.peek()은 가장 마지막에 있는 데이터를 보여주기만 할 뿐, 추출하지 않는다.
s = []
s.append(1)
s.append(5)
s.append(10)
print("my stack is" : s)
pop을 통해 마지막 데이터인 10이 추출되었기 때문에, stack 값을 다시 살펴보면 [1, 5] 만 저장되어있다.
1. 네이버에서 구글 페이지로 이동한다.
: 네이버가 이전 페이지 stack으로 push되었다.
2. 구글에서 유튜브로 페이지를 이동한다.
: 구글이 이전 페이지 stack에 push되었다.
3. 이전 페이지를 클릭한다.
: 유투브가 다음 페이지 stack에 들어가고, 이전 페이지에서 구글이라는 페이지가 pop되어 빠져나왔다.
4. 한 번더 이전 페이지를 클릭한다.
: 구글이 다음 페이지에 들어가고, 이전 페이지에서 네이버가 빠져나왔다.
다음 강의에 설명할 것