Python

3. 스택(Stack)

Eva_0401 2020. 3. 31. 16:40
  • 데이터를 제한적으로 접근할 수 있는 구조

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

    • 큐: FIFO (줄서기)
    • 스택: LIFO (책쌓기)
  • 대표적인 스택의 활용 : 컴퓨터 내부의 프로세스 구조의 함수 동작방식

  • 주요 기능

    • push() : 데이터 넣기
    • pop() : 데이터 빼기
  • 장점

    • 구조가 단순해서, 구현이 쉽다.
    • 데이터 저장/읽기 속도가 빠르다.
  • 단점 (일반적인 스택 구현시)

    • 데이터 최대 갯수를 미리 정해야 한다.
      • 파이썬의 경우 재귀 함수는 1000번까지만 호출이 가능함
    • 저장 공간의 낭비가 발생할 수 있음
      • 미리 최대 갯수만큼 저장 공간을 확보해야 함

스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적

 

연습

스택구조 이해하기

> 0이 되어 끝나면 마지막 print("returned",data)가 시행됨

 

data_stack = list()

data_stack.append(1) 	#1 삽입
data_stack.append(2)	#2 삽입
--------------------------------
data_stack 		# [1,2] 출력
--------------------------------
data_stack.pop()    	#2 출력


---------------2----------------
stack_list = list()

def push(data):
    stack_list.append(data)

def pop():
    data = stack_list[-1] # 맨 끝 
    del stack_list[-1]
    return data
--------------------------------   
for index in range(10):
    push(index)
--------------------------------    
pop()			  # 결과 : 9