본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
Python

자료구조[1]-STACK(python)

by Hazard3_o00sung 2020. 6. 1.
728x90

자료구조[1]-STACK

 

본 포스트는 python언어로 작성되었음을 알려드립니다.

 

1. stack이란?

 

https://hazarddev.tistory.com/17?category=794281

 

STACK(스택)이 뭔가요?[1]

본 포스트는 c언어를 중심으로 작성되었습니다. STACK(스택)이 뭔가요? 스택.. 롤 하신분이라면 압니다. 필자 또한 롤을 즐겨했고, 요즘 롤은 참고로 전혀 몰라요. 근데 예전에 메자이 스택 아시겠�

hazarddev.tistory.com

제가 c언어를 토대로 스택자료구조를 구현하여 포스팅을 한 적이 있습니다. 스택자료구조에 대한 간단한 설명은 위 링크를 통해서 확인하실 수 있습니다. 제가 본 포스팅에서 하고자 하는 것은 파이썬을 통한 스택자료구조의 구현입니다.

 

스택은 차곡차곡 쌓아가는 것을 의미합니다. 그렇단 말은, 제일 먼저 들어온 데이터가 가장 아래에 위치하게 된다는 말입니다. 이것을 현실세계로 도입해봤을 때를 상상해봅시다.

 

오늘도 한 생명을 구하기 위해 노력하시는 모든 소방관분들께 감사를 표합니다^^

소방관은 불을 끄고, 생명을 살리고, 위험에 처한 상황을 벗어나게 해주는 사실상 현실판 슈퍼맨이 아닐 수 없습니다. 

 

"FIRST IN, LAST OUT"

 

 

 

스택 자료구조 또한 소방관 분들과 같습니다. 제일 먼저 들어간 데이터는 가장 나중에 나오게 되는 FILO방식으로 구현됩니다. 그렇다면

실제 파이썬 코드 상에서 어떻게 구현되는지 확인 해 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Stack(object):
    def __init__(self):
        self.stack = [] 파이썬에서 스택 자료구조는 리스트 형태로 구현됩니다.
 
    def isEmpty(self):
        return not bool(self.stack)
 
    def push(self,value):
        self.stack.append(value)
 
    def pop(self):
        value = self.stack.pop()
        if value is not None:
            return value
 
        else:
            print('Stack is empty')
 
    def size(self):
        return len(self.stack)
 
    def peek(self):
        if self.stack:
            return self.stack[-1]
 
        else:
            print('Stack is Empty')
 
    def __repr__(self):
        return repr(self.stack)
cs

 

실제 코드를 동작시키기 위해서는 

 

stack = Stack() <== 인스턴스화를 먼저해야합니다. 클래스에 대해 잘 모르시는 분들은 제 블로그에 파이썬 클래스 포스팅을 보고오시는 것을 추천드립니다.

 

stack.push(1)

stack.push(2)

하게 되면

 

차례대로 들어가서 [1,2] 라는 리스트 형태의 스택 구조로 구현되게 되는 것 입니다.

 

다음 포스팅에서는 큐(queue)자료구조를 구현해보겠습니다.

 

궁금한점 댓글 달아주시면 성심껏 답변 드리겠습니다. 감사합니다~

728x90

댓글