[Queue] LinkedList로 구현하기

2020. 6. 3. 16:44컴퓨터언어/자료구조&알고리즘

728x90
반응형
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(){
this.first = null;
this.last = null;
this.length = 0;
}
peek() {
return this.first
}
enqueue(value){
const newNode = new Node(value);
if (!this.first) {
this.first = newNode;
}
const temp = this.last;
newNode.next = temp;
this.last = newNode;
this.length++;
return this
}
dequeue(){
if (this.first === this.last) {
return "The queue is empty, cannot dequeue anything."
}
let currentNode = this.last;
let prevNode = this.last;
while(currentNode.next) {
if (!currentNode.next.next) {
prevNode = currentNode;
}
currentNode = currentNode.next;
}
prevNode.next = null;
this.first = prevNode;
this.length--;
return this
}
}
const myQueue = new Queue();

 

class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(){
this.first = null;
this.last = null;
this.length = 0;
}
peek() {
return this.first
}
enqueue(value){
const newNode = new Node(value);
if (!this.first) {
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
this.length++;
return this
}
dequeue(){
if (this.first === this.last) {
this.last = null
}
if (this.length === 0) {
return "The queue is empty, cannot remove anything."
}
// const target = this.first
this.first = this.first.next;
this.length--;
// return target
return this
}
//isEmpty;
}
const myQueue = new Queue();
728x90
반응형