CS/자료구조_개념

[자료구조] : 스택(선형)

Jedy_Kim 2021. 5. 5. 17:55
728x90

- 데이터를 제한적으로 접근할 수 있는 구조(LIFO)

- 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조. 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조

- push() : 데이터를 스택에 삽입

- pop() : 데이터를 스택에서 꺼내기

 

- 장점 : 구조가 단순해서 구현이 쉽다., 데이터 저장/읽기 속도가 빠르다.

- 단점 : 데이터 최대 갯수를 미리 정해야 한다., 파이썬의 경우 재귀함수는 1000번 까지만 호출가능하다.

 

# 재귀함수 결과가 스택과 유사하다.

def recursive(data):

    if data < 0:

        print('ended')

    else:

        print(data)

        recursive((data-1))

        print('returned', data)

 

recursive(4)

 

========================================================

4    

3    

2    

1    

0   

ended

returned 0

returned 1

returned 2

returned 3

returned 4

 

# 구현 1

data_stack = list()

data_stack.append(1) # push

data_stack.append(2)

print(data_stack.pop()) # pop

 

# 구현 2

stack_list = list()

 

def push(data):

    stack_list.append(data)

 

def pop():

    data = stack_list[-1]

    del stack_list[-1]

    return data

 

for idx in range(10):

    push(idx)

 

print(pop())

 

 

 

 

반응형