자료구조 | 스택, 큐

chaen·2024년 2월 16일
post-thumbnail

❓ 스택이란?

나중에 넣은 데이터가 먼저 나오는 LIFO Last In First Out 기반의 선형 자료 구조

쓰임새

  • 재귀 알고리즘 : 재귀적으로 함수를 호출해야하는 경우에 임시 데이터를 스택에 저장
  • 웹 브라우저 방문기록 (뒤로가기)
  • 실행 취소 (undo) Ctrl + Z
  • 역순 문자열 만들기
  • 수식의 괄호 검사
  • 후위 표기법 계산

배열 -> 데이터의 양 많음, 삽입 삭제 거의 없음, 데이터 접근이 자주 일어남
스택 -> 삽입 삭제 빈번, 데이터 접근이 거의 없을 때 사용함

구현 예제

class Stack {
    constructor() {
        this.items = [];
    }

    getBuffer() {
        return this.items.slice(); // 데이터 전체 반환
    }

    isEmpty() {
        return this.items.length === 0; // 비어 있는지 확인
    }

    push(element) {
        this.items.push(element); // 추가
    }

    pop() {
        return this.items.pop(); // 삭제
    }

    front() {
        return this.items[0]; // 첫번째 데이터 조회
    }

    peak() {
        return this.items[this.items.length - 1]; // 마지막 데이터 조회
    }

    size() {
        return this.items.length; // 크기 확인 (잘 안씀)
    }

    length() {
        return this.items.length; // 길이 확인
    }

    indexOf(element) {
        return this.items.indexOf(element); // 데이터 위치 확인
    }

    includes(element) {
        return this.items.includes(element); // 존재 여부 확인
    }

    clear() {
        this.items = []; // 전체 삭제
    }

    // 추가적인 메서드
    // ...

    // isFull() 메서드 (크기가 고정된 경우에만 유효)
    isFull() {
        // 구현 방법은 스택의 현재 크기와 최대 크기를 비교하여 결정될 수 있음
        // 이 예제에서는 동적으로 크기가 조정되기 때문에 항상 false를 반환
        return false;
    }
}

push, pop, slice, length 등의 내장 메서드를 이용하여 기능을 구현할 수 있다.

❓ 큐란?

먼저 넣은 데이터가 먼저 나오는 FIFO First In First Out 기반의 선형 자료 구조

0개의 댓글