선입선출 데이터구조인 Queue(큐) 구조를 배우다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/* Queue (큐)
- 먼저 들어온 것이 먼저 나가는 선입선출 구조
- First In, First Out (FIFO)
ex) 카페에서 먼저 주문한 손님의 음료가 먼저 나가는 것,
은행에서 번호표 순서대로 업무가 나가는 것
삽입 = 인큐
삭제 = 디큐
ex) 프로세스 관리 (큐)
*/
let array = [];
let index = 0;
let enqueue = (num) => {
// 배열의 맨 마지막에 데이터를 추가
array[index] = num
index++
console.log("현재 array", array)
}
let dequeue = () => {
// 배열의 맨 앞 데이터를 삭제
array.splice(0, 1)
console.log("현재 array", array)
index-- // 인덱스를 줄여야 데이터를 추가할때 쓰이는 index가 정상적으로 작동함
}
while(true){
let menu = prompt("1. 입력 2. 출력 3. 종료")
if(menu == 1){
let data = prompt("데이터 입력하세요.")
enqueue(data)
}
else if(menu == 2){
dequeue()
}
else{
break;
}
}
</script>
</body>
</html>
스택구조와는 반대로 배열의 맨 앞 데이터인 인덱스 0번부터 제거해야 한다. index 변수를 만들어서 0부터 1씩 증가하게 만들어준다. index로 데이터를 추가할 때마다 0, 1, 2.. 번째 자리에 데이터가 추가되게 한다.
데이터를 제거할 때는 스택구조와 마찬가지로 splice함수를 사용한다. 중요한 점은 데이터를 제거할 때마다 index를 1씩 감소해야 하는데 그 이유는 데이터를 제거하면서 인덱스도 함께 줄어들기도 하고 데이터 추가할 때 index가 정상적으로 실행되게 하기 위함이다.
'Front-End > 2. JavaScript 자료구조' 카테고리의 다른 글
[JS] Ex03_Stack구조.html (0) | 2023.06.20 |
---|---|
[JS] Ex02_이진탐색.html (0) | 2023.06.15 |
[JS] Ex01_순차탐색.html (0) | 2023.06.15 |