Data Structure를 정리해보자. // Part1

Kwangseok Kim·2020년 12월 25일
0

Data Structure,

여러 데이터들의 묶음을 어떻게 사용하고 저장할지 정의한 것.

1. Stack

ㅇ LIFO(Last In First Out), 마지막으로 들어간게 처음 나온다!

쌓여있는 접시와 같다.
접시를 아래부터 쌓고 제일 윗접시부터 사용하는 것과 같은 구조.

아래 그림을 보면 이해가 쉽다.

위 그림을 보면서 메소드들의 코드를 확인해보자.
아래는 Stack의 기본적인 메소드들.

Class Stack {
  Constructor() {]
  //기본적으로 있어야하는 프로퍼티들.
    this.storage = {}; // 자료를 저장할 공간, 빈 객체를 처음 값으로.
    this.top = 0; // 자료의 크기, 0을 처음값으로.
  }
  
  size() {
    //객체를 배열화 해서 길이를 리턴
    return Object.keys(this.storage).length;
  }
  
  push(element) {
    //마지막에 element push
    this.top++;
    this.storage[this.top] = element;
  }

  pop() {
    //마지막 값 삭제
    let result = this.storage[this.top];
    delete this.storage[this.top];
    this.top--;
    return result;
  }
}

2. Queue

ㅇ FIFP(First In, First Out), 먼저 들어간게 먼저 나온다!

놀이공원에 줄 서 있는 사람들과 같다.
제일 먼저 줄을 선 사람이 제일 먼저 놀이기구를 타는 것과 같은 구조.

아래의 그림을 보면 이해가 쉽다.

위 그림을 보면서 메소드들의 코드를 확인해보자.
아래는 Queue의 기본적인 메소드들.

class Queue {
  constructor() {
    //기본적으로 있어야하는 프로퍼티들.
    this.storage = {}; // 자료를 저장할 공간, 빈 객체를 처음 값으로.
    this.front = 0; // Queue의 시작을 나타내는 값.
    this.rear = 0; // Queue의 끝을 나타내는 값.
  }
  

  size() {
    //객체를 배열화 해서 length 리턴
    return Object.keys(this.storage).length;
  }

  enqueue(element) {
    //끝에 element 삽입
    this.storage[this.rear] = element;
    this.rear++;
  }

  dequeue() {
    //맨 앞의 값 제거
    let result = this.storage[this.front];
    delete this.storage[this.front];
    this.front++;
    return result;
  }
}
profile
누구나 처음은 있잖아요.

0개의 댓글