Stack & Queue

2024. 3. 14. 17:24·CS/Data Structure

1.Stack

가장 마지막으로 들어간 데이터가 가장 첫 번 째로 나오는 성질을 가진 자료 구조

  • LIFO(Last in First Out) 구조
  • 삽입 및 삭제에 O(1), 탐색에 O(n)의 시간 복잡도를 가진다.
  • 한 쪽 방향에만 자료를 추가, 삭제 할 수 있으며 가장 마지막에 삽입된 자료의 위치를 `top`이라 한다.
    • Stakc은 `top`에만 접근이 가능하기 때문에 그 외의 위치에 대한 데이터 추가 및 삭제가 불가능하다.
  • 웹 브라우저 방문 기록, 실행 취소, 역순 문자열 만들기, 후위 표기법 계산 등에 쓰인다.
  • Push : 데이터를 스택의 맨 위에 추가.
  • Pop : 스택의 맨 위에 있는 데이터를 제거.

+ 장점

  • top 위치의 데이터에 바로 접근하므로 데이터 삽입, 삭제의 시간 복잡도가 O(1)로 빠르다.

- 단점

  • 후입선출 구조이기 때문에 특정 위치의 데이터에 랜텀 엑세스가 어렵다.
  • 특정 위치의 데이터에 바로 접근하려면 맨위에서부터 차례로 pop하는 방식을 사용해야 한다.

2.Queue

먼저 들어간 원소가 먼저 나오는 구조이다.

  • FIFO(First in First out) 구조
  • 한 쪽에서 삽입, 반대 쪽에서 삭제가 이루어진다.
    • 삽입이 이루어지는 쪽을 `rear`, 데이터가 삭제되는 쪽을 `front`라고 한다.
  • 대기열, 버퍼, 작업 스케줄링 등에 사용된다.
  • 큐의 활용분야로 안드로이드의 경우, 루퍼의 메시지 큐가 예시 중 하나이다.
  • Enqueue(삽입) : 큐의 뒤쪽(마지막)에 요소를 추가
  • Dequeue(제거) : 큐의 앞쪽(첫 번째)에서 요소를 제거

+ 장점

  • front 위치의 데이터에 바로 접근하므로 데이터 삽입, 삭제의 시간 복잡도가 O(1)로 빠르다.

- 단점

  • 큐 역시 front가 아닌 중간에 위치한 데이터 접근이 불가능하다.
  • Queue를 일반 Array로 구현하면 dequeue의 시간복잡도가 O(n)로 느리다.
    • 이로 인해 사용되지 않는 메모리가 낭비될 수 있다.
저작자표시 (새창열림)

'CS > Data Structure' 카테고리의 다른 글

복잡도  (0) 2024.03.17
Heap  (0) 2024.03.15
LinkedList  (0) 2024.02.20
Array  (1) 2024.02.16
'CS/Data Structure' 카테고리의 다른 글
  • 복잡도
  • Heap
  • LinkedList
  • Array
tjdgus
tjdgus
  • tjdgus
    Do It...
    tjdgus
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Language
        • Java
      • CS
        • Data Structure
        • OS
        • Algorithm
        • Network
      • 오류 모음집
      • ETC
      • 함수형 프로그래밍
      • JPA
      • Toy
      • 데이터베이스
      • Spring
      • 코딩테스트
        • 99클럽 4기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트준비
    개발자취업
    TiL
    오블완
    티스토리챌린지
    99클럽
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
tjdgus
Stack & Queue
상단으로

티스토리툴바