Stack & Queue : Linear data structure. Flexible size.
스택과 큐는 모두 선형 데이타 구조이고 사이즈가 유동적이라는 공통점이 있다. 각각의 특징을 살펴보면,
Stack
stack은 '쌓다'라는 뜻 그대로 맨 마지막에 넣은 데이터부터 꺼낼 수 있으므로 LIFO(Last In First Out)라고 함.
자료의 입력과 출력이 한 방향에서만 이루어지는 형태의 자료구조로 역순으로 데이터를 꺼내 쓰고 싶을 때 사용함.
활용 예: 다양한 에디터의 Undo/Redo 기능 같은 것.
자바스크립트에서 스택이 가지고 있는 Method는:
- Array.prototype.push()
- Array.prototype.pop()
Pseudo code로 작성해 보기:
//1. 입력: 빈 스택에 string 데이터를 추가
stack.push('text1')
stack.push('text2')
stack.push('text3')
//2. 데이터 확인
stack[stack.length -1]
//3. 입력취소 : 뒤에서 부터 데이터를 삭제
stack.pop() //'text3'
stack.pop() //'text2'
stack.pop() //'text1'
//4. 결과 확인
Queue
Queue는 양쪽으로 뚫린 파이프 같은 구조로 데이터를 넣은 순서대로 꺼내므로 FIFO(First In First Out)라고 함.
한쪽에서는 넣기만 하고 한쪽에서는 꺼내기만 하는 형태의 자료구조로 순차적으로 데이터를 꺼내 쓰고 싶을 때 사용함.
활용 예: 프린터 큐, 온 순서대로 입장하는 식당 예약 등.
자바스크립트에서 큐가 이 가지고 있는 Method는:
- Array.prototype.push()
- Array.prototype.shift()
Pseudo code로 작성해 보기:
//1. 예약: 빈 큐에 예약자 데이터를 추가한다.
queue.push('Kim')
queue.push('Lee')
queue.push('Park')
//2. 데이터 확인
queue.[queue.length -1]
//3. 입장 : 앞에서 부터 데이터를 삭제
queue.shift() //'Kim'
queue.shift() //'Lee'
queue.shift() //'Park'
//4. 결과 확인
레퍼런스:
Stacks & Queues | Data Structures in JavaScript
'Coding > TIL (Today I Learned)' 카테고리의 다른 글
Data Structure 02: (0) | 2019.12.09 |
---|---|
OOP 02: JavaScript의 Prototype (0) | 2019.12.08 |
OOP 01: 객체지향 프로그래밍의 컨셉 (0) | 2019.12.06 |
Git 02. 개념과 주요 명령어 (0) | 2019.12.05 |
npm, Package.json (0) | 2019.11.29 |