JS 데이터 구조 스 택 대기 열
창고 의 몇 가지 방법
class Stack {
constructor() {
this.items = []
}
// push
push(element) {
this.items.push(element)
}
// ,
pop() {
return this.items.pop()
}
// peek , ( , )
peek() {
return this.items[this.items.length - 1]
}
// isEmpty true, false
isEmpty() {
return this.items.length === 0
}
// size , length
size() {
return this.items.length
}
//clea ,
clear() {
return this.items = []
}
}
Stack 클래스 사용 하기
우선 Stack 클래스 를 초기 화하 고 요 소 를 추가 해 야 합 니 다. 이 때 스 택 안의 요소 가 비어 있 기 때문에 isEmpty 방법 을 사용 하면 ture 로 돌아 갑 니 다.
const stack = new Stack()
stack.push(' ')
stack.push(' ')
stack.push(' ')
stack.push(' ')
console.log(stack.items) //
console.log(stack.pop()) // (LIFO , )
console.log(stack.items) //
console.log(stack.peek()) //
console.log(stack.isEmpty())//false
console.log(stack.size()) //3
console.log(stack.clear())//0
스 택 을 사용 하여 실제 문 제 를 해결 합 니 다 (10 진법 2 진법)
//
function dec2bin(num) {
const stack = new Stack()
// while , num 0 while
while (num > 0) {
let remainder = num % 2 //
num = Math.floor(num / 2) // Math.floor
stack.push(remainder); //
}
// console.log(stack.items) //
let binString = ""
while (!stack.isEmpty()) {
binString += stack.pop()
}
return binString
}
console.log(dec2bin(100)) //1100100
대열 구조
class Queue {
constructor() {
this.items = []
}
enqueue(element) {
this.items.push(element)
}
dequeue() {
return this.items.shift()
}
peek() {
if (this.items.length === 0) return null
return this.items[0]
}
isEmpty() {
return this.items.length === 0
}
size() {
return this.items.length
}
}
queue 클래스 사용 하기
const queue = new Queue()
queue.enqueue(" ")
queue.enqueue(" ")
queue.enqueue(" ")
queue.enqueue(" ")
console.log(queue.items)
console.log(queue.dequeue())//
console.log(queue.items)//
console.log(queue.peek())//
대기 열 을 사용 하여 실제 문 제 를 해결 하 다.
북 을 치 며 꽃 을 한 바퀴 돌 고 삼촌 을 시작 합 니 다. 어떤 숫자 를 세 는 사람 이 자동 으로 탈락 하고 마지막 에 남 은 사람 이 승리 합 니 다. 이 사람 은 누구 입 니까?
//
function passGame(nameList, num) {
//
const queue = new Queue()
for (let i = 0; i < nameList.length; i++) {
queue.enqueue(nameList[i])//nameList
}
//
while (queue.size() > 1) {
for (let i = 0; i < num - 1; i++) {
queue.enqueue(queue.dequeue())// 3
}
queue.dequeue()// 3 ,
}
return queue.peek()
}
console.log(passGame([" ", " ", " ", " "], 3))//
우선 순위 대기 열
class QueueElement {
constructor(element, priority) {
this.element = element
this.priority = priority
}
}
class PriorityQueue extends Queue {
enqueue(element, priority) {
// 1. QueueElement
const queueElement = new QueueElement(element, priority)
//
if (this.isEmpty()) {
this.items.push(queueElement)
} else {
let added = false
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].priority > queueElement.priority) {
this.items.splice(i, 0, queueElement)
added = true
break
}
}
if (!added) {
this.items.push(queueElement)
}
}
}
}
const queue = new PriorityQueue();
queue.enqueue("aaa", 100)
queue.enqueue("bbb", 150)
queue.enqueue("ccc", 120)
queue.enqueue("ddd", 99)
queue.items.forEach(item => {
console.log(item.element, item.priority) //
})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.