나의 기록, 현진록

[Python] Data Structure Stack 자료구조 스택 본문

Programming/Algorithm & Data Structure

[Python] Data Structure Stack 자료구조 스택

guswlsdk 2021. 6. 23. 13:50
반응형

 

 

dbguswls030/Argorithm

Contribute to dbguswls030/Argorithm development by creating an account on GitHub.

github.com


 

스택의 예

식당 주방에 쌓여있는 접시를 예로 들 수 있다. 설거지를 마친 접시를 쌓아둠(Push)과 동시에 요리를 마친 음식을 담기 위해 쌓아둔 정리를 가져가는(pop) 것이 동시에 이루어지는 것으로 이해할 수 있다. 스택은 후입선출(LIFO: Last-In-First-Out) 형태의 자료구조이다.

 


다음은 스택 구현에 쓰인 요소들이다.

 

init() : 스택을 초기화 하는 메소드

is_empty() : 스택이 비어있는지 여부 확인

is_full() : 스택이 가득차있는지 여부 확인

size() : 현재 스택의 데이터 갯수

push(x) : 스택에 x 요소 삽입

pop() : 스택에서 top에 해당하는 요소를 삭제 후 반환

peek() : 스택에서 top에 해당하는 요소를 삭제하지 않고 반환

MAX_STACK_SIZE : 스택 사이즈를 제한하기 위한 상수


 

 

 

def init():
    top = -1
    stack.clear()

def is_empty():
    if top == -1:
        return True
    else:
        return False

def is_full():
    if top == MAX_STACK_SIZE-1:
        return True
    else:
        return False


def size():
    return len(stack)



def push(x):
    global top
    if is_full() == True:
        print("Error: stack is full")
    else:
        stack.append(x)
        top+=1

def pop():
    global top
    if is_empty() == True:
        print("Error: stack is empty")
    else:
        top-=-1
        return stack.pop()
        
def peek():
    if is_empty() == True:
        print("Error: stack is empty")
    else:
        return stack[top]


    

MAX_STACK_SIZE = 5
stack=[]
top = -1

init()
push(1)
print(stack)
push(2)
print(stack)
push(3)
print(stack)
print(pop())
print(stack)
print(pop())
print(pop())

print(size())

 

반응형