From 7b55ec126bd3405dd50cdf65062f55d9e869c608 Mon Sep 17 00:00:00 2001 From: ricardo Date: Tue, 17 Oct 2023 23:06:06 +0200 Subject: [PATCH] first push --- src/queue/queue-data-structure.js | 29 +++++++++++++---- src/queue/queue-dom.js | 53 +++++++++++++++++++++++-------- src/stack/stack-data-structure.js | 28 ++++++++++++---- 3 files changed, 82 insertions(+), 28 deletions(-) diff --git a/src/queue/queue-data-structure.js b/src/queue/queue-data-structure.js index 98ac0fd0..c352ee38 100644 --- a/src/queue/queue-data-structure.js +++ b/src/queue/queue-data-structure.js @@ -5,25 +5,40 @@ class Queue { } canEnqueue() { - // ... your code goes here + if (this.queueControl.length < this.MAX_SIZE) { + return true; + } + return false; } isEmpty() { - // ... your code goes here + if (this.queueControl.length === 0) { + return true; + } else if (this.queueControl.length >= 0) { + return false; + } } enqueue(item) { - // ... your code goes here + if (this.canEnqueue()) { + this.queueControl.push(item); + return this.queueControl; + } + throw new Error("QUEUE_OVERFLOW"); } dequeue() { - // ... your code goes here + if (this.queueControl.length <= 0) { + throw new Error("QUEUE_UNDERFLOW"); + } else { + return this.queueControl.shift(); + } } display() { - // ... your code goes here - } + return this.queueControl; + } } // This is required to enable the automated tests, please ignore it. -if (typeof module !== 'undefined') module.exports = Queue; +if (typeof module !== "undefined") module.exports = Queue; diff --git a/src/queue/queue-dom.js b/src/queue/queue-dom.js index 236675b7..9629c067 100644 --- a/src/queue/queue-dom.js +++ b/src/queue/queue-dom.js @@ -10,38 +10,63 @@ const dequeue = document.querySelector('.btn-take-dequeue'); const queue = new Queue(); const clearQueueInput = () => { - // ... your code goes here + queueInput.value = ''; }; const generateListQueue = () => { - // ... your code goes here -}; + warningTopQueue.style.display = 'none'; + warningBottomQueue.style.display = 'none'; + queueUL.innerHTML = ''; + let length = queue.display().length; + let size = queue.MAX_SIZE - length; + queue.display().forEach(item => { + let li = document.createElement('li'); + li.className = 'active'; + li.innerText = item; + queueUL.appendChild(li); + }); +​ + for (let i = 0; i < size; i++) { + let li = document.createElement('li'); + li.className = 'inactive'; + li.innerHTML = ' '; + queueUL.appendChild(li); + } +}; +​ +​ generateListQueue(); - +​ +​ const generateWarningQueue = (type) => { if (type === 'underflow') { - // ... your code goes here + warningBottomQueue.style.display = 'block'; + warningBottomQueue.innerText = type; } else if (type === 'overflow') { - // ... your code goes here + warningTopQueue.style.display = 'block'; + warningTopQueue.innerText = type; } }; - +​ const addToQueue = () => { try { - // ... your code goes here + queue.enqueue(queueInput.value) + clearQueueInput(); + generateListQueue() } catch (error) { - // there was an overflow error, handle it + generateWarningQueue('overflow∫') } }; - +​ const removeFromQueue = () => { try { - // ... your code goes here + queue.dequeue() + generateListQueue() } catch (error) { - // there was an underflow error, handle it + generateWarningQueue('underflow') } }; - +​ addQueue.addEventListener('click', addToQueue); -dequeue.addEventListener('click', removeFromQueue); +dequeue.addEventListener('click', removeFromQueue); \ No newline at end of file diff --git a/src/stack/stack-data-structure.js b/src/stack/stack-data-structure.js index 1106f6f3..4bb3b629 100644 --- a/src/stack/stack-data-structure.js +++ b/src/stack/stack-data-structure.js @@ -5,25 +5,39 @@ class Stack { } canPush() { - // ... your code goes here + if (this.stackControl.length < this.MAX_SIZE) { + return true; + } + return false; } isEmpty() { - // ... your code goes here + if (this.stackControl.length <= 0) { + return true; + } else if (this.stackControl.length >= 0) { + return false; + } } push(item) { - // ... your code goes here + if (this.canPush()) { + this.stackControl.push(item); + return this.stackControl; + } + throw new Error("STACK_OVERFLOW"); } pop() { - // ... your code goes here + if (this.stackControl <= 0) { + throw new Error("STACK_UNDERFLOW"); + } + return this.stackControl.pop(); } display() { - // ... your code goes here - } + return this.stackControl; + } } // This is required to enable the automated tests, please ignore it. -if (typeof module !== 'undefined') module.exports = Stack; +if (typeof module !== "undefined") module.exports = Stack;