자료구조#3 스택(stack)

정은경·2020년 3월 8일
0

Stack (스택)

  • 데이터를 제한적으로 접근할 수 있는 구조
    * 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
  • 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조
    * 큐 : FIFO 정책
    • 스택 : LIFO 정책

1. Stack 구조

  • 스택은 LIFO, FILO 데이터 관리 방식을 따름
    LIFO(Last-In, First-Out)
    FILO(First-In, Last-Out)
  • 대표적인 스택 활용
    * 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
    • 왜? 단순하니깐! 데이터 저장/읽기 속도가 빠르니깐!
  • 주요 기능
    * push()
    • pop()
  • https://visualgo.net/en/list?slide=1

2. 스택 구조와 프로세스 스택

  • 스택 구조는 프로세스 실행 구조의 가장 기본
    * 함수 호출 시 프로세스 실행구조를 스택과 비교해서 이해 필요

3. 자료 구조 스택의 장단점

  • 장점
    * 구조가 단순, 구현이 쉬움
    • 데이터 저장/읽기 속도 빠름
  • 단점 (일반적인 스택 구현시)
    데이터 최대 갯수를 미리 정해야 함
    파이썬의 경우, 재귀함수는 1000번까지만 호출 가능
    • 저장 공간의 낭비가 발생할 수 있음
      • 미리 최대 갯수만큼 저장 공간을 확보해야 함
  • 스택은 단순하고 빠른 성능을 위해 사용 됨으로, 보통 배열 구조를 활용해서 구현한느 것이 일반적임. 이 경우, 위에서 열거한 단점이 있을 수 있음

4. 파이썬 리스트로 스택 사용해보기

data_stack = list()

data_stack.append(1)
data_stack.append(2)

data_stack.pop()
stack_list - list()
def push(data):
    stack_list.append(data)

def pop():
    data = stack_list[-1]
    del stack_list[-1]
    return data

참고자료

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글