Implement a bidirectional linked list
A bidirectional linked list is the same as a singular linked list except that there are two links between two nodes.
Here is the specification of my BiLinkedList.
BiLinkedList(), Create an empty BiLinkedList. BiLinkedList(const BiLinkedList& list), Create a BiLinkedList from another BiLinkedList list. BiLinkedList(const T& value), Create a BiLinkedList whose first element is value. BiLinkedList(const T values[], size_t size), Create a BiLinkedList from an array values of size size. const BiLinkedList& operator=(const BiLinkedList& list), Support BiLinkedList assignment.