210617.Today I学習(TIL):データ構造(Stack,Queue)


Stack


スタックは、最も早くデータにアクセスする構造であり、第1の第1または第1の出力(LIFO)構造とも呼ばれる.
Stackは図の通りです.

Stackアルゴリズムの実現は以下の通りである.
class Stack {
  constructor() {
    this.storage = {};
    this.top = 0; // 스택의 가장 상단을 가리키는 포인터 변수를 초기화
  }

  size() {
    return this.top;
  }

	// 스택에 데이터를 추가
  push(element) {
    this.storage[this.top] = element;
    this.top += 1;
  }
	
	// 가장 나중에 추가된 데이터가 가장 먼저 추출
  pop() {
    if (this.size() <= 0) {
      return;  // 빈 스택에 pop 연산을 적용해도 에러가 발생하지 않아야 함 => 아무것도 리턴하지 않음
    }

    const result = this.storage[this.top - 1];
    delete this.storage[this.top - 1];
    this.top -= 1;
    
    return result;
  }
}

Queue


Queueは,先入先出,後入先出,すなわち先入後出の資料構造である.先入先出というコンセプトで、スーパーやコンビニの在庫処理方法と同じなので、私にはStackよりも近づきやすいです.
Queueは図として表示されます.

Queueアルゴリズムの実現は以下の通りである.
class Queue {
  constructor() {
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }

  size() {
    return this.rear - this.front;
  }
	
	// 큐에 데이터를 추가
  enqueue(element) {
    this.storage[this.rear] = element;
    this.rear += 1;
  }
	
	// 가장 먼저 추가된 데이터가 가장 먼저 추출
  dequeue() {
    if (this.size() <= 0) { 
      return;  // 빈 큐에 dequeue 연산을 적용해도 에러가 발생하지 않아야 함 => 아무것도 리턴하지 않음
    }

    const result = this.storage[this.front];
    delete this.storage[this.front];
    this.front += 1;

    return result;
  }
}
今週末はstackとqueueを使ったアルゴリズムの問題を復習します.今になってやっと概念が理解できたが,アルゴリズムを深化させる問題は解決しにくい.第2節まで頑張ります!