class Deque {
constructor() {
this.items = []
}
addFront(element) {
this.items.unshift(element)
}
addRear(element) {
this.items.push(element)
}
removeFront() {
if (this.isEmpty()) return undefined
return this.items.shift()
}
removeRear() {
if (this.isEmpty()) return undefined
return this.items.pop()
}
peekFront() {
return this.isEmpty() ? undefined : this.items[0]
}
peekRear() {
return this.isEmpty() ? undefined : this.items[this.items.length - 1]
}
isEmpty() {
return this.items.length === 0
}
size() {
return this.items.length
}
print() {
console.log(this.items.toString())
}
}
const deque = new Deque()
deque.addFront(10)
deque.addFront(20)
deque.addRear(30)
deque.addRear(40)
console.log('덱 상태:')
deque.print()
console.log('앞쪽에서 제거:', deque.removeFront())
console.log('뒤쪽에서 제거:', deque.removeRear())
console.log('덱 상태:')
deque.print()
console.log('앞쪽 요소:', deque.peekFront())
console.log('뒤쪽 요소:', deque.peekRear())
console.log('덱 크기:', deque.size())
console.log('덱이 비었는가:', deque.isEmpty())