Stack & Queue

Taehye.on·2023년 5월 10일
0

코드스테이츠 44기

목록 보기
71/89
post-thumbnail

D-56

🔍 Stack

Stack은 데이터를 순서대로 쌓는 자료구조다. 예를 들어 프링글스처럼 최상단을 먼저 뺄 수 있는 구조다. 이를 후입선출, 영어로 LIFO(Last In First Out)이라 한다.

//예1) 1, 2, 3, 4를 스택에 차례대로 넣습니다.

stack.push(데이터)
|  4  | <- top
|  3  |
|  2  |
|  1  |
//들어간 순서대로, 1번이 제일 먼저 들어가고 4번이 마지막으로 들어가게 됩니다.

//예2) 스택이 빌 때까지 데이터를 전부 빼냅니다.

stack.pop()
|    |
|    |
|    |
|    |
4, 3, 2, 1
//제일 마지막에 있는 데이터부터 차례대로 나오게 됩니다.

Stack 자료구조는 경로가 최상단 한 곳이기 때문에 데이터를 하나씩 넣고 뺄 수 있다.
Stack은 브라우저의 뒤로 가기, 앞으로 가기 기능에 사용된다.

👨‍🏫 Stack 예제

const stack = new Stack(); // Stack은 사전에 정의된 것으로 가정합니다.

stack.push(1);
stack.push(2);
console.log(stack.pop());
stack.push(3);
console.log(stack.pop());
stack.push(4);
console.log(stack.pop());
console.log(stack.pop());

// 2, 3, 4, 1

🔍 Queue

Queue는 톨게이트로 예를 들 수 있다. 가장 먼저 진입한 차가 먼저 톨게이트를 나가고 이후 순서대로 나가는 구조다. 이처럼 먼저 들어간 데이터가 제일 처음에 나오는 선입선출, 영어로 FIFO(First In First Out)구조로 되어있다.

//예1) 1, 2, 3, 4를 큐에 차례대로 넣습니다.

						queue.enqueue(데이터)
출력 방향(head) 	<---------------------------< 입력 방향(tail)
					1 <- 2 <- 3 <- 4
				<---------------------------<
//들어간 순서대로, 1번이 제일 먼저 들어가고 4번이 마지막으로 들어가게 됩니다.

//예2) 큐가 빌 때까지 데이터를 전부 빼냅니다.

						queue.dequeue(데이터)
출력 방향(head)	 <---------------------------< 입력 방향(tail)

				 <---------------------------<
1, 2, 3, 4
//제일 첫 번째 있는 데이터부터 차례대로 나오게 됩니다.

Queue는 두개의 입출력 방향을 가지고있다. 데이터를 입력할 경우 맨 끝(tail)으로만 입력, 데이터를 출력할 경우 맨 앞(head)으로만 출력이 가능하다.
Queue는 데이터를 하나씩 넣고 뺄 수 있다.

순차적으로 진행해야하는 것들 중 하나가 프린트다. Queue에 들어온 순서대로 출력하지 않으면 인쇄물이 섞일 것이다.

const queue = new Queue(); // Queue는 사전에 정의 된 것으로 가정합니다.

queue.enqueue(1);
queue.enqueue(2);
console.log(queue.dequeue());
queue.enqueue(3);
console.log(queue.dequeue());
queue.enqueue(4);
console.log(queue.dequeue());
console.log(queue.dequeue());

// 1, 2, 3, 4

0개의 댓글