상세 컨텐츠

본문 제목

[ES6] 3) 큐(Queue) / 스택(Stack)

Javascript/ES6

by www_dev 2020. 7. 13. 13:19

본문

# 큐(Queue)

 

추상 자료형(ADT: Abstract Data Type)의 한 종류로 FIFO(First In First Out = 선입선출)의 특징을 지닌다.

추상자료형: 구체적인 구현 방식이 아닌, 데이터를 어떻게(Ex. 선입선출) 다뤄야 하는지에 대한 정의를 나타내는 자료형.

 

* 클래스(Class)와 배열(Array)를 이용한 구현 예.

위와 같이 클래스로 큐(Queue)에 대한 생성자(Array 타입), 그리고 enqueue, dequeue 메서드를 정의.

 

 

실제 생성된 Queue( = q )를 통해 enqueue( ), dequeue( ) 작업을 진행.

 

위에서 보듯이 enqueue 작업을 통해 처음 들어갔던 'fisrt' 문자열이 dequeue 작업을 통해 가장 먼저 빠져나오게되는 현상, 선입선출(FIFO)을 확인할 수 있다.

 

이렇게 '큐'는 선입선출의 특징을 이용해서, 특정 작업에 대한 순서를 표현하는 것 등 '결과가 정해진 순서에 의해 표현되어지는 프로그래밍' 을 하는 데 사용되어질 수 있다.

Ex. [A] 라는 요리를 만들기 위해 필요한 레시피 사진의 등록 순서 ====> 그 레시피 사진이 보여지는 순서. 

 

 

 

 

 

 

마찬가지로 추상자료형의 한 종류, 와는 반대로 LIFO(Last In First Out) 후입 선출 ( => 가장 첫번째로 들어간 데이터가 가장 마지막으로 나옴.) 특징을 가진다.

 

* 클래스(Class)와 배열(Array)을 이용한 스택 구현 예.

배열 타입의 생성자, 그리고 push, pop 메서드를 가지는 스택 클래스 정의.

 

 

 

실제 생성된 Stack( = s)을 통한 push( ), pop( ) 작업 진행. 

 

push( ) 메서드를 통해 차례대로 들어갔던 데이터는, pop( ) 메서드로 가장 나중에 들어갔던 데이터를 빼낸다.

이를 배열 내부 데이터가 없을 때 까지 반복하게 되면, 가장 먼저 들어갔던 'first' 문자열이 가장 마지막에 빼내어지게 된다. 반대로, 가장 나중에 들어갔던 'second' 문자열 데이터가 가장 먼저 빠져나오게 되는 것과 같다.

 

이로써, 스택(Stack)은 LIFO(Last In First Out) 후입선출 작업임을 확인할 수 있다. 

 

사용되어질 수 있는 예는,

주어진 문자열을 역순으로 뱉어내거나, 뒤로가기나 실행취소를 했을 때 이전의 데이터 정보를 기억해야 하는 경우 등의 프로그래밍이 있다.

 

 

'Javascript > ES6' 카테고리의 다른 글

[ES6] 6) Some, Every  (0) 2020.08.12
[ES6] 5) Map, Filter  (0) 2020.07.20
[ES6] 4) 트리(Tree)  (0) 2020.07.15
[ES6] 2) Class  (0) 2020.07.09
[ES6] 1) Iteration, Symbol  (0) 2020.07.08

관련글 더보기

댓글 영역