본문으로 바로가기

Stack, Queue

category CS 공부/Algorithm, Data Structure (재정리) 2021. 4. 6. 23:56

Stack

  • 스택은 Last In First Out 으로, 요소가 들어올 때마다 기존 요소들에 차곡차곡 쌓아 올린 형태의 자료구조이며,
    제일 마지막으로 들어온 요소 즉, Top 이 가르키는 요소에만 접근, POP을 할 수 있다.
  • 비어있는 상태의 스택을 pop 할 때 stack underflow, 꽉 찬 스택에 push 할 때 stack overflow를 발생시킨다.
  • 배열로 구현할 시에, top 인덱스를 활용하여 여러 메소드를 구현한다.
  • 스택의 활용 예시
    • 운영체제의 메모리 스택
    • 웹 브라우저 방문기록의 뒤로가기
    • 역순 문자열, 후위 표기법 계산, 수식의 괄호 검사 등
    • DFS ( 함수의 재귀, 메모리 스택을 활용 ), 미로찾기
    • 2개로 큐 구현하기.

Queue

  • 큐는 First In First Out 으로, 먼저 들어온 요소에만 접근하여 pop 되는 실생활의 대기줄과 같은 자료구조이며,
    큐의 front에서 pop이 일어나고, 큐의 rear에서 push가 일어난다.
  • 배열로 구현시 front, rear 인덱스를 활용하여 구현한다.
  • 스택과 다르게 삽입, 삭제의 발생 인덱스가 달라서, overflow, underflow를 잘 계산하여야 하며,
    원소의 수가 적거나 없어도 rear의 인덱스는 항상 증가하여 공간 낭비하는 문제점이 있다.
  • 이를 해결하기 위해, 환형 큐를 사용하며, 인덱스들을 %큐의 크기 연산 해주어 공간 낭비를 해결한다.
    ( front와 rear인덱스의 값을 비교하여 겹쳐서 overflow인지 underflow인지 구분할 때 사이즈를 사용해야 한다. )
    ( 이를 단순하게 하기 위해서 항상 첫 원소를 비워두는 기법도 있다. )
  • 큐의 활용 예시
    • 우선순위 작업
    • 프로세스 관리
    • 여러 대기 상황 구현.
    • 캐시 구현
    • BFS

'CS 공부 > Algorithm, Data Structure (재정리)' 카테고리의 다른 글

Quick Sort  (0) 2021.04.07
Binary Tree  (0) 2021.04.07
Insertion Sort  (0) 2021.04.06
Selection Sort  (0) 2021.04.06
Bubble Sort  (0) 2021.04.06