The whole implementation is done using 2 classes, Node and doublyLinkedList
Just use the doublyLinkedList class as we use vectors in cpp
Function Description -> size() : returns the size of linkedlist -> isEmpty() : returns true if list is empty -> toString() : returns bracket notation of list
-> addFirst() : adds element to front of list -> addList() : adds element to end of list -> addAt(val,idx) : adds val to index idx
-> removeFirst() : removes element from front of list -> removeLast() : removes element from end of list -> removeAt(idx) : removes element from idx
-> getAt(idx) : returns the Node of element at index idx <Node*>
The implementation is targated to be clear and self-explanatory. You can use this implementation anywhere you want to! Hope you like it :)