본문 바로가기
프로그래밍/알고리즘, 프로그래밍 언어

[알고리즘] Stack자료구조 JavaScript로 구현

by 제이콥J 2021. 7. 27.

Stack 자료구조 설명

- 데이터를 순서대로 쌓는 자료구조이며, 입력과 출력이 하나의 방향으로 제한되어 이루어짐

- LIFO(Last In First Out) : 가장 나중에 들어간 데이터는 가장 먼저 나올 수 있음

- FILO(First In Last Out) : 가장 먼저 들어간 데이터는 가장 나중에 나올 수 있음

 

코드 작성 포인트

1. Stack자료를 담기 위한 위한 객체나 배열을 변수로 선언하기

2. Stack이 배열이라면 push/pop, shift/unshift를 통해 자료를 추가하고 빼기

3. 가장 마지막에 들어온 자료 또는 새로 들어올 자료인덱스를 top으로 표현

 

Stack 구현 코드 (JavaScript)

// Stack을 생성하기 위한 class 정의하기

class Stack {

  //stack constructor를 생성
  constructor() {
    this.storage = {};
    this.top = 0;
  }
  
  // stack의 사이즈 구하기
  size() {
    return this.top;
  }
  // this.top은 스택에 새롭게 추가될 요소의 인덱스를 나타내며, 하나씩 증가하기 때문에 size를 표현
  
  //stack에 element를 추가
  push(element) {
    this.storage[this.top] = element;
    this.top += 1;
  }
  // this.top을 키로, 요소를 값으로 하여 storage에 할당
  
  // stack에서 element를 제거한 뒤 해당 element를 반환
  pop() {
    if (this.size() <= 0) {    // size가 0이라면 아무 일도 일어나지 않음
      return;
    }
    const result = this.storage[this.top - 1];
    delete this.storage[this.top - 1];
    this.top -= 1;
    return result;
  }
  // top-1로 최상단을 리턴하며 스택에서 삭제. 하나를 제거했으니 top도 감소
  
}
반응형

댓글