2021年1月19日

17736 ワード

オブジェクト長のブログの取得
資料に関するブログ
https://towardsdatascience.com/8-common-data-structures-every-programmer-must-know-171acf6a1a42
https://learn.g2.com/history-of-computers

QUEUE

class Queue {
  constructor() {
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }

  size() {
    return Object.keys(this.storage).length;
  }

  enqueue(element) {
    this.storage[this.rear] = element;
    this.rear++;
    return this.size();
  }
  /**
   * enqueue는 push와 비슷하다.
   */

  dequeue() {
    if (this.size() === 0) {
      return this.size();
    }
    let result = this.storage[this.front];
    delete this.storage[this.front];
    this.front++;
    return result;
  }
}

let queue = new Queue();

queue.enqueue(100)
1

console.log(queue)

Queue {storage: {}, front: 0, rear: 1}
front: 0
rear: 1
storage: {0: 100}
__proto__: Object

queue.enqueue(200)
2

console.log(queue)

Queue {storage: {}, front: 0, rear: 2}
front: 0
rear: 2
storage: {0: 100, 1: 200}
__proto__: Object

queue.dequeue();
100
console.log(queue)

Queue {storage: {}, front: 1, rear: 2}
front: 1
rear: 2
storage: {1: 200}
__proto__: Object
class Stack {
  constructor() {
    this.storage = {}; /// []
    this.top = -1;
  }

  size() {
    return Object.keys(this.storage).length;

    *혹은
    let count = 0;
    for (let key in this.storage) {
      if (key) {
        count++;
      }
    }
    return count;
  } /// for 문으로도 할 수 있다.//

   * for문으로도 할 수 있다.
   * 객체에 요소가 몇개가 들어있는지 확인
   * 객체를 돌면서 키가 있는지 확인
   * 있으면 카운트
   * 오브젝트 키 랭스 사용

  push(element) {
    this.storage[this.size()] = element;
    this.top++;
    return this.size();
  }

   * this.size()이 최상단 값이라고 가정
   * push로 요소를 추가했을 때
   * this.top을 증가시킨다.
   * 추가된 객체(배열)의 길이를 리턴
   * (Array.prototype.push 사용 시 배열의 길이가 리턴되기 때문에) OOP적인 요소


  pop() {
    if (this.size() === 0) {
      return this.size();
    }
    let result = this.storage[this.top];
    delete this.storage[this.top];
    this.top--;
    return result;
  }

 * this.size()0일 경우 그대로 size() 리턴
 * 객체의 최상단값을 제거
 * 최상단의 위치값 -1
 * 제거한 최상단값 리턴

  
}

https://developer.mozilla.org/ko/docs/Web/API/WindowTimers/setTimeout
https://css-tricks.com/ease-out-in-ease-in-out/