JS에서 대기열 작성(배열 사용)
대기열은 FIFO(선입선출)입니다. 대기열에 먼저 들어간 것이 먼저 나오는 것입니다. 내 구현에서 대기열의 왼쪽이 첫 번째가 됩니다.
처음에는 단순한 대기열이었지만 GeeksforGeeks의 사람들이 몇 가지 추가 방법을 추가하도록 영감을 받았습니다.
평소와 같이 이해가 되지 않거나 개선할 수 있는 부분이 있으면 댓글로 알려주세요.
class Queue {
constructor() {
// initialise array as data structure for the queue
this.queue = [];
}
add(item) {
// we add an item at the end of the array
this.queue.push(item);
console.log(
`${item} has been added to the queue. The queue is now ${this.queue}`
);
return this.queue;
}
isEmpty() {
// if queue length is 0, return true otherwise return false
return this.queue.length === 0;
}
remove() {
// if queue is empty, we print error message
if (this.isEmpty()) {
console.log("Can't remove anything, the queue is empty");
return this.queue;
}
// we remove first item of the array
// from my teacher at Lambda I learnt that the method is called
// "shift" because when you remove first item of array in memory
// we need to "shift" the whole array one space to the left in memory
// it would then be O(n), am I horrinly wrong??
const removed = this.queue.shift();
console.log(
`${removed} has been removed from the q. q is now ${this.queue}`
);
return this.queue;
}
print() {
// print error if queue is empty
if (this.isEmpty()) {
console.log("Can't print anything, the queue is empty");
return this.queue;
}
// initialise string
let queue = '';
// according to mdn I am not supposed to use for..in for arrays, but it works
// well to get the index. Is it that bad??
for (let i in this.queue) {
// we add the item of the queuea and ", ". if last item, we don't add nothing behind
queue +=
this.queue[i] + `${parseInt(i) === this.queue.length - 1 ? '' : ', '}`;
}
return queue;
}
size() {
// returns length of the array this.queue
console.log(`The queue has ${this.queue.length} items.`);
return this.queue.length;
}
returnFirst() {
if (this.isEmpty()) {
console.log('Queue is empty');
return this.queue;
}
// return first item in the queue
return this.queue[0];
}
}
Reference
이 문제에 관하여(JS에서 대기열 작성(배열 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petrussola/writting-a-queue-in-js-1g7h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)