A stack is an abstract data type that stores an ordered collection of items which follow first in last out (FILO) or last in first out (LIFO) principle; with two principal operations: push, which adds an item to the stack, and pop, which removes the most recently added item.

Autocomplete or suggestion or typeahead offers a number of possible values while typing. I am going to solve this problem using trie data structure and algorithm.

A heap is a tree-based data structure which satisfies the heap property, if the parent node is greater than the child node is called max-heap or if the parent node is less than the child node is called min-heap.