From fb60e97244c3af3a069f3cf0843ed2a0f6ba66c3 Mon Sep 17 00:00:00 2001 From: Progyan Bhattacharya Date: Thu, 22 Oct 2020 19:47:28 +0530 Subject: [PATCH] feat(ts): stack and queue implementation --- .../code/typescript/queue.ts | 52 +++++++++++++++++++ .../code/typescript/stack.ts | 52 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 contents/stacks_and_queues/code/typescript/queue.ts create mode 100644 contents/stacks_and_queues/code/typescript/stack.ts diff --git a/contents/stacks_and_queues/code/typescript/queue.ts b/contents/stacks_and_queues/code/typescript/queue.ts new file mode 100644 index 000000000..59d9c8321 --- /dev/null +++ b/contents/stacks_and_queues/code/typescript/queue.ts @@ -0,0 +1,52 @@ +interface IQueue { + /** + * `dequeue` removes first element from the queue and returns the same + */ + dequeue(): T; + /** + * `enqueue` adds element to last of the queue and returns the size + */ + enqueue(data: T): number; + /** + * `size` return size or length of the queue + */ + size(): number; + /** + * `front` returns first element of the queue + */ + front(): T; +} + +class Queue implements IQueue { + private readonly list: Array = []; + + public enqueue(data: T) { + return this.list.push(data); + } + + public dequeue() { + return this.list.shift(); + } + + public size() { + return this.list.length; + } + + public front() { + return this.list[0]; + } +} + +function exampleQueue() { + const numberQueue = new Queue(); + + numberQueue.enqueue(4); + numberQueue.enqueue(5); + numberQueue.enqueue(9); + + console.log(numberQueue.dequeue()); + console.log(numberQueue.size()); + console.log(numberQueue.front()); +} + +exampleQueue(); diff --git a/contents/stacks_and_queues/code/typescript/stack.ts b/contents/stacks_and_queues/code/typescript/stack.ts new file mode 100644 index 000000000..58b38ac40 --- /dev/null +++ b/contents/stacks_and_queues/code/typescript/stack.ts @@ -0,0 +1,52 @@ +interface IStack { + /** + * `pop` removes last element from the stack and returns the same + */ + pop(): T; + /** + * `push` adds element to last of the stack and returns the size + */ + push(data: T): number; + /** + * `size` return size or length of the stack + */ + size(): number; + /** + * `top` returns last element of the stack + */ + top(): T; +} + +class Stack implements IStack { + private readonly list: Array = []; + + public push(data: T) { + return this.list.push(data); + } + + public pop() { + return this.list.pop(); + } + + public size() { + return this.list.length; + } + + public top() { + return this.list[this.list.length - 1]; + } +} + +function exampleStack() { + const numberStack = new Stack(); + + numberStack.push(4); + numberStack.push(5); + numberStack.push(9); + + console.log(numberStack.pop()); + console.log(numberStack.size()); + console.log(numberStack.top()); +} + +exampleStack();