Javascript에서 스택 구현 및 작업

9372 단어
소개

스택은 후입선출(LIFO) 원칙에 따라 작동하는 선형 데이터 구조입니다. 선형 데이터 구조이기 때문에 스택의 최상위 구성원을 가리키는 하나의 포인터인 top만 있습니다. 새 요소가 스택에 추가되면 맨 위에 배치되며 해당 요소는 스택에서만 제거할 수 있습니다.
스택으로 작업할 때 염두에 두어야 할 몇 가지 사항은 다음과 같습니다.
책 더미와 같은 실제 스택처럼 동작하기 때문에 스택이라고 합니다.
스택은 미리 정의된 용량을 갖는 추상 데이터 유형입니다. 즉, 특정 크기의 구성 요소만 저장할 수 있습니다.
특정 순서로 요소를 삽입하고 삭제하는 데이터 구조로, 후입선출(LIFO) 또는 선입선출(FIFO)이 될 수 있습니다.

스택 작업

LIFO 패턴은 스택에서 사용됩니다. 아래 그림과 같이 스택에는 5개의 메모리 블록이 있습니다. 따라서 스택의 크기는 5입니다.

현재 비어 있는 스택에 요소를 저장한다고 가정합니다. 아래에 설명된 대로 크기 5 스택을 선택하고 스택이 채워질 때까지 구성 요소를 하나씩 밀어 넣습니다.



스택이 가득 차 있기 때문에 스택의 크기는 5입니다. 위의 상황에서 스택에 새 요소를 입력하면 위에서 아래로 이동하는 것을 볼 수 있습니다. 아래에서 위로 스택이 채워집니다.

스택의 구현

스택은 모든 프로그래밍 언어로 구현할 수 있지만 이 기사의 초점은 JavaScript를 사용하여 스택 및 스택 작업을 구현하는 것입니다. 스택은 배열 또는 연결 목록을 사용하여 구현할 수 있습니다. 이 기사에서는 배열을 사용하여 스택을 구현합니다. 다음은 스택에서 수행할 수 있는 기본 작업입니다.

푸시 - 스택에 요소를 추가합니다.
팝 - 스택에서 요소를 제거합니다.
Peek - 제거하지 않고 스택의 최상위 데이터 요소를 가져옵니다.

위에서 언급한 작업으로 스택 인스턴스화

배열로 스택을 초기화하기 위해 JavaScript 클래스를 사용할 것입니다.

class Stack {
  constructor() {
    this.storage = [];
    this.top = -1;
  }
}


위의 코드 블록은 스택 생성을 처리합니다. constructor() 메서드는 해당 클래스의 개체 인스턴스를 만드는 클래스 메서드입니다.

다음으로 push 메서드를 사용하여 스택에 요소를 추가해야 합니다. 이것은 아래의 코드 블록을 사용하여 수행됩니다.

푸시

push(data) {
  this.top++;
  this.storage[this.top] = data;
}


위의 푸시 메서드는 데이터로 표시된 인수를 수락하고 데이터 요소를 스택에 추가합니다.



pop() {
  if(this.top === -1) {
    return null;
  } else {
      let data = this.storage[this.top];
      this.top--;
      return data;
    }   
}


pop 메서드는 인수를 허용하지 않습니다. 이 메소드가 호출되면 스택 맨 위에 있는 요소를 제거합니다. 스택이 비어 있으면 null을 반환합니다.

몰래 엿보다

peek() {
  return this.storage[this.top] = data || null;
}


pop 메서드와 같은 peek 메서드는 인수를 허용하지 않습니다. 단순히 스택 맨 위에 있는 요소를 반환합니다. 스택이 비어 있으면 null을 반환합니다.

class Stack {
  constructor() {
    this.storage = []
    this.top = -1
  }
  push(data) {
    this.top++;
    this.storage[this.top] = data;
  }
  pop() {
    if(this.top === -1) {
      return null;
    } else {
        let data = this.storage[this.top];
        this.top--;
        return data;
      }
  }

  peek() {
    return this.storage[this.top] = data || null;
  }
}


위의 코드 스니펫은 작업이 클래스의 메서드인 전체 스택 클래스를 보여줍니다.
스택 클래스의 사용

// initialize the class
const stack = new Stack()

// add elements to the stack
stack.push(3) 
stack.push(4) 
stack.push(5) 
stack.push(6) 

console.log(stack) // returns [3, 4, 5, 6];

//remove an element from the stack
stack.pop() 
console.log(stack) // returns [3,4,5];

// get the element at the top of the stack
console.log(stack.peek()) // returns 5;


결론

우리는 JavaScript 클래스와 배열을 사용하여 스택과 일부 작업을 성공적으로 구현했습니다. 우리가 다룬 스택 작업은 푸시 작업, 팝 작업 및 피크 작업입니다. 그게 다야. 기사에 대한 생각과 의견을 공유하십시오. 다음 글에서 뵙겠습니다.

좋은 웹페이지 즐겨찾기