본문 바로가기

공부정리

Stack 과 Queue에 대해서..

Stack 제한적으로 접근할수 있는 나열 구조이다.

스택은 끝에서만 자료를 넣거나 있는 선형구조라고 한다.

스택을 영어로 해석하면 굴뚝이라는 의미가 되는데…

들어가는 구멍이 위에있고 밑에 구멍은 막혀있는 구조라고 생각하면 편하다.

위의 그림과 같이 스택에서 push라는 메소드를 실행할 경우에는 맨위의 값쪽으로 데이터를 집어 넣는다.

반대로 pop 맨위의 값을 뺴내는 것을 의미한다.

그리고 스택에 대한 메소드를 정리해보자면

Stack.top() 스택의 가장 데이터를 반환한다.

Stack.pop() 스택의 가장 데이터를 삭제한다.

Stack.push() 스택의 가장 데이터로 top 가리키는 자리의 위에 메모리를 생성하고 데이터를 삽입한다.

Stack.empty() 스택이 비었다면 1 반환하고 그렇지 않다면 0 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Stack {
  constructor() {
    this._arr = [];
  }
  push(item) {
    this._arr.push(item);
  }
  pop() {
    return this._arr.pop();
  }
  top() {
    return this._arr[this._arr.length - 1];
  }
}
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // 3
 
cs

 

큐에 대하여

아래 위가 뚫린 원통형 구조라고 생각하면 쉽다. (선입선출 구조)

위의 그림과 같이 들어가는 입구와 나오는 출구가 다르다.

입구는 들어가는것만 가능하며 출구는 나오는 것만 가능하다.

마치 에스컬레이터 타는 것처럼 말이다. 이것보다 놀이공원에 놀이기구 줄서서 들어가고 나오는 것을 생각하면 맞을지도 모르겠다.

게임에서 큐를 돌린다라는 준비를 마친팀이 우선적으로 매칭되도록 한다.

결국 줄서기 이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Queue {
  constructor() {
    this._arr = [];
  }
 put(item) {
    this._arr.push(item);
  }
 get() {
    return this._arr.shift();
  }
}
 
const queue = new Queue();
queue.put(1);
queue.put(2);
queue.put(3);
queue.get(); // 1
cs

 

 

 

출처: <https://helloworldjavascript.net/pages/282-data-structures.html>

'공부정리' 카테고리의 다른 글

CORS , XSS, CSRF (web security)  (0) 2020.01.14
browser, http, server , API , fetch  (0) 2020.01.13
OOP(Object Oriented Programming)에 대해서  (0) 2019.12.27
알고리즘 & pseudo code  (0) 2019.12.27
런타임(runtime)에 대해서..  (0) 2019.12.23