JavaScript 데이터 구조: 스택



스택이란?



스택은 한쪽 끝인 맨 위에서만 액세스할 수 있는 요소 목록입니다. 이를 LIFO(Last In First Out) 데이터 구조라고 합니다. 현재 스택의 맨 위에 있지 않은 요소는 액세스할 수 없습니다. 스택 맨 아래에 있는 요소에 도달하려면 그 위에 있는 모든 요소를 ​​삭제해야 합니다.

스택 생성



먼저 스택 클래스와 생성자를 정의합니다. 항목 배열은 스택의 요소를 저장합니다.


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



다음으로 push() 메서드를 정의합니다. 이렇게 하면 스택 맨 위에 새 항목이 추가됩니다.


 push=(element)=>{
        return this.items.push(element);
    }


스택 맨 위에 있는 요소를 확인하기 위해 peek() 메서드를 정의합니다.


 peek=(element)=>{
        return this.items[this.items.length - 1];
    }


pop() 함수는 스택에서 최상위 요소를 제거하고 반환합니다.


pop=()=>{
        return this.items.pop();
    };


스택에 얼마나 많은 요소가 있는지 찾기 위해 size() 함수를 정의합니다.


 size=()=>{
        return this.items.length;
    }


스택의 모든 요소를 ​​제거하기 위해 clear() 함수를 정의합니다.


 clear=()=>{
        return this.items=[];
    }


이것은 Stack 클래스의 전체 코드입니다.


class Stack {
    constructor(){
        this.items=[];
    }
    push=(element)=>{
        return this.items.push(element);
    }
    peek=(element)=>{
        return this.items[this.items.length - 1];
    }
    pop=()=>{
        return this.items.pop();
    }
    size=()=>{
        return this.items.length;
    }
    clear=()=>{
        return this.items=[];
    }
}


스택 클래스를 사용하려면:


let newStack= new Stack();
//to pop
newStack.pop();
//to add
newStack.push(3);


스택 사용 사례


  • 회문-회문은 car, racecar와 같이 앞뒤로 철자가 같은 단어입니다. 스택은 주어진 단어가 회문인지 확인하는 데 사용할 수 있습니다. 원래 문자열은 왼쪽에서 오른쪽으로 이동하는 스택으로 푸시됩니다. 문자열의 끝에 도달하면 스택은 역순으로 단어를 포함합니다. 스택의 맨 위는 첫 번째 문자이고 스택의 맨 아래는 마지막 문자입니다. 반전된 문자열은 원래 문자열과 비교됩니다. 그들이 같으면 단어는 회문입니다.
  • 여러 기본 변환 – 스택을 사용하여 한 기본에서 다른 기본으로 숫자를 변환할 수 있습니다.
  • 좋은 웹페이지 즐겨찾기