[Data Structure] 스택에 대해 간단하게 설명하기

2024. 12. 31. 02:18·[ Computer Science ]/CS study

CS 이론 관련 면접 준비를 위해 랜덤으로 떠오르는 것에 대해 말해보는 연습을 하고 있다

 

스택은 후입 선출의 선형 자료구조이다. pop 작업은 스택의 최상단 top에서만 수행할 수 있고 가득찬 스택에 더 넣으려고 하면 stack overflow, 비어있는 스택에서 값을 추출하려고 하면 stack underflow가 발생한다. 

 

자바에서는 stack 클래스를 사용할 수 있으나 stack 클래스 자체는 내부적으로 vector 를 상속받기 때문에 인덱스를 통한 접근이나 수정이 가능하기는 하다. 그래서 후입선출이라는 stack 특성에 위반되는 코드를 작성할 우려가 있으므로 deque 인터페이스 구현체를 사용하는 것을 더 권장한다. 

 

vector 에 포함된 메소드들은 synchronized 방식으로 구현되어 있어서 멀티 스레드 환경에서 동기화된다는 장점이 있지만 단일 스레드에서는 동기화가 일어나는 것이 불필요한 낭비이므로 성능에 악영향을 줄 수 있다. 

 

하지만 deque 인터페이스는 후입선출 특성을 그대로 가지고 가면서 synchronized 여부에 맞게 각각의 구현체를 택할 수 있다는 점이 성능 최적화에 유리하다. 

 

(deque는 queue를 확장한 것으로 입출력을 양끝에서 할 수 있고 인덱스로 요소에 접근하거나 수정할 수 없도록 한다.)

 

(동기화 관련하여 ... stack은 모든 작업에 lock이 사용되기 때문에 synchronized 방식의 구현임을 알 수 있는 것이다.)

 

(stack은 vector를 상속받은 상태이므로 다중 상속을 지원할 수 없다.)

 

728x90

'[ Computer Science ] > CS study' 카테고리의 다른 글

[CS/Linear Algebra] 딥러닝을 위한 선형대수학 개요  (0) 2025.02.18
[CS] CI/CD란 간단하게 설명하기  (1) 2025.02.14
[Server] WAS와 웹 서버의 차이점 간단하게 설명하기  (2) 2025.01.05
[JavaScript] 자바스크립트 호이스팅에 대해 간단하게 설명하기  (0) 2024.12.31
[Database] 데이터베이스 시스템에서 동시성을 제어하는 방법에 대해 간단하게 설명하기  (1) 2024.12.31
[Database] 트랜잭션 격리 수준에 대해 간단하게 설명하기  (1) 2024.12.31
'[ Computer Science ]/CS study' 카테고리의 다른 글
  • [Server] WAS와 웹 서버의 차이점 간단하게 설명하기
  • [JavaScript] 자바스크립트 호이스팅에 대해 간단하게 설명하기
  • [Database] 데이터베이스 시스템에서 동시성을 제어하는 방법에 대해 간단하게 설명하기
  • [Database] 트랜잭션 격리 수준에 대해 간단하게 설명하기
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      소프트웨어 공학
      공대생 대외활동
      스마트모빌리티공학체험교육
      코딩 인강
      ssafy 13기
      오블완
      코드잇
      프로그래머스
      싸피
      spdk
      현대오토에버
      현대오토에버 스마트모빌리티
      티스토리챌린지
      현대오토에버 스마트 모빌리티
      데이터베이스
      프로그래머스 c++
      ACM
      코딩 교육
      백준
      hotstorage
      프로그래밍 언어론
      SQL
      MySQL
      프로그래머스 코테
      대학생 대외활동
      SSAFY
      프로그래머스 입문
      비전공자 코딩
      자바스크립트
      싸피 13기
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [Data Structure] 스택에 대해 간단하게 설명하기
    상단으로

    티스토리툴바