Stack

이정훈·2024년 7월 18일

자료구조

목록 보기
9/16

Stack

Stack은 선형 자료구조로 LIFO(Last In Firtst Out) 구조입니다.
LIFO는 후입선출을 말하는 것입니다.
즉, 여러 개의 요소들이 삽입 되었을 때 가장 나중에 들어온 요소가 가장 먼저 나가게 된다는 것입니다.

Stack을 만들기 위해서는 가장 마지막에 들어온 요소를 가리킬 포인터인 top이 필요합니다.

Stack의 유형

  1. 고정 크기 stack
    고정 크기 stack은 크기가 고정되어 있어 크기를 줄이거나 늘릴 수 없는 stack을 말합니다.
    만약 stack이 꽉찬다면 overflow 오류가 납니다.
    stack이 비어있는데 stack안에서 요소를 빼려하면 underflow 에러가 납니다.

  2. 동적 크기 stack
    동적 크기 stack은 크기가 가변적이여서 크기를 줄이거나 늘릴 수 있는 stack을 말합니다.
    stack이 꽉찼다면 이후 요소가 들어올 때 크기를 늘립니다.
    stack내에서 어느 정도로 요소가 줄어들었다면 크기를 줄일 수 있습니다.

Stack의 Operation

  1. push()
    stack에 요소를 삽입합니다.

  2. pop()
    stack에서 요소를 빼서 가져옵니다.

  3. top()
    stack에서 top이 가리키는 요소를 가져옵니다.

  4. isEmpty()
    stack이 비어있는지 아닌지 boolean값으로 반환해줍니다.

  5. isFull()
    stack이 꽉 찼는지 아닌지 boolean 값으로 반환해줍니다.

Stack을 구현하는 방식

Array를 이용하는 방식과 Linked List를 이용하는 방식이 있습니다.

Stack의 이점

  1. Simplicity
    Stack은 간단하면 이해하기 쉬운 자료 구조입니다.
    많은 영역에서 활용 가능합니다.

  2. Efficiency
    삽입과 삭제가 매우 빠릅니다.

  3. Last in, First out
    LIFO 구조는 다양한 상황에서 유용합니다.

  4. Limited memory usage
    다른 자료 구조에 비해 메모리 효율적입니다.

profile
기록으로 흔적을 남깁니다.

0개의 댓글