본문 바로가기

Coding/TIL (Today I Learned)

Data Structure 01: Stack & Queue

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

[자료구조 알고리즘] Stack 구현하기 in Java

[자료구조 알고리즘] Queue 구현하기 in Java

'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