[자료구조] JavaScript로 Stack 구현하기

C__W.A·2024년 8월 2일

Algorithm - JavaScript

목록 보기
1/1

✅ 스택이란?

스택은 "후입선출(LIFO: Last-In-First-Out)" 원칙을 따르는 선형 자료구조입니다. 이는 가장 최근에 삽입된 항목이 가장 먼저 제거된다는 의미입니다. 스택을 실생활에 비유하자면 책상 위에 쌓인 책더미와 같습니다. 새로운 책은 맨 위에 놓이고, 책을 꺼낼 때도 맨 위에서부터 꺼내게 됩니다.

✍️ 스택의 주요 연산

push(item): 스택의 맨 위에 항목을 추가합니다.
pop(): 스택의 맨 위 항목을 제거하고 반환합니다.
peek() 또는 top(): 스택의 맨 위 항목을 반환하지만 제거하지는 않습니다.
isEmpty(): 스택이 비어있는지 확인합니다.
size(): 스택에 있는 항목의 개수를 반환합니다.

👉 구현은 push와 pop만 했습니다.

class Node{
    constructor(value){
        this.value = value;
        this.next = null;
    }
}

class Statk{
    constructor(){
        this.first = null;
        this.last = null;
        this.size = 0;
    }
    push(val){
        var newNode = new Node(val);
        if(!this.first){
            this.first = newNode;
            this.last = this.first;
        }else{
            var temp = this.first;
            this.first = newNode;
            this.first.next = temp;
        }
        return ++this.size;
    }
    pop(){
        if(!this.first) return null;
        var temp = this.first;
        if(this.first === this.last){
            this.last = null;
        }
    }
}

스택 주요 특징

  1. 구현이 쉬움
  2. 빅오는 상수 1
  3. 빠른 접근 속도: 데이터의 저장과 읽기 속도가 빠릅니다.
  4. 크기 제한: 일반적으로 배열로 구현할 경우, 스택의 최대 크기를 미리 정해야 합니다
  5. 오버플로우와 언더플로우: 스택이 가득 찼을 때 더 많은 데이터를 삽입하려 하면 오버플로우가, 비어있는 스택에서 데이터를 꺼내려 하면 언더플로우가 발생할 수 있습니다
profile
기술은 문제를 해결하기 위해 존재한다

0개의 댓글