A doubly linked list is like a linked list except that each node has a pointer both to the next node in the list and to the previous node in the list. There are also pointers to the two ends of the lists, called for example Left and Right. The values should be stored in order with the least value at the left and the greatest value at the right. Thus a list with 4 nodes containing the data 3,6,7,10 should look like this:
Write a class which will store a doubly linked list of integers (or another type if you prefer) in order, and which will allow the following operations:
1. A constructor and a destructor.
2. Insert a new element chosen by the user at the correct place in the list; for example inserting 8 in the list above will give the list 3, 6, 7, 8, 10.
3. Delete a data element chosen (by value) by the user, for example deleting 6 from the list above will leave 3, 7, 10.
4. List elements from left to right (i.e. in ascending order).
5. List elements from right to left (i.e. in descending order).
You should also write a suitable main program to allow comprehensive testing of the class and its operations.