Add Stack.

This commit is contained in:
Oleksii Trekhleb
2018-03-28 17:01:46 +03:00
parent 159d489e52
commit 8da6754523
9 changed files with 189 additions and 48 deletions

View File

@@ -10,19 +10,19 @@ export default class Queue {
}
peek() {
if (!this.linkedList.tail) {
if (!this.linkedList.head) {
return null;
}
return this.linkedList.tail.value;
return this.linkedList.head.value;
}
add(value) {
enqueue(value) {
this.linkedList.append({ value });
}
remove() {
const removedTail = this.linkedList.deleteTail();
return removedTail ? removedTail.value : null;
dequeue() {
const removedHead = this.linkedList.deleteHead();
return removedHead ? removedHead.value : null;
}
}

View File

@@ -1,8 +1,2 @@
# Queue
|Operation |Complexity |
|---------------------------|-------------------|
|Find |O() |
|Insert/delete at beginning |O() |
|Insert/delete in middle |O() |
|Insert/delete at end |O() |

View File

@@ -7,11 +7,11 @@ describe('Queue', () => {
expect(queue.linkedList).not.toBeNull();
});
it('should add data to queue', () => {
it('should enqueue data to queue', () => {
const queue = new Queue();
queue.add(1);
queue.add(2);
queue.enqueue(1);
queue.enqueue(2);
expect(queue.linkedList.toString()).toBe('1,2');
});
@@ -21,11 +21,11 @@ describe('Queue', () => {
expect(queue.peek()).toBeNull();
queue.add(1);
queue.add(2);
queue.enqueue(1);
queue.enqueue(2);
expect(queue.peek()).toBe(2);
expect(queue.peek()).toBe(2);
expect(queue.peek()).toBe(1);
expect(queue.peek()).toBe(1);
});
it('should check if queue is empty', () => {
@@ -33,19 +33,19 @@ describe('Queue', () => {
expect(queue.isEmpty()).toBeTruthy();
queue.add(1);
queue.enqueue(1);
expect(queue.isEmpty()).toBeFalsy();
});
it('should remove from empty', () => {
it('should dequeue from queue in FIFO order', () => {
const queue = new Queue();
queue.add(1);
queue.add(2);
queue.enqueue(1);
queue.enqueue(2);
expect(queue.remove()).toBe(2);
expect(queue.remove()).toBe(1);
expect(queue.dequeue()).toBe(1);
expect(queue.dequeue()).toBe(2);
expect(queue.isEmpty()).toBeTruthy();
});
});