public void PrintElementInReverse_Ex14_2(Action <string> printData)
        {
            DoubleFacedNode currentNode = LastNode;

            while (currentNode != null)
            {
                printData(currentNode.Data);
                currentNode = (DoubleFacedNode)currentNode.PreviousNode;
            }
        }
        public ListNode Prepend(string data)
        {
            var newNode = new DoubleFacedNode(data);

            // If there are no elements yet in the linked list:
            if (FirstNode == null)
            {
                FirstNode = newNode;
            }
            else //If the linked list already has at least one node:
            {
                newNode.NextNode = FirstNode;
                FirstNode        = newNode;
            }

            return(newNode);
        }
        public void InsertAtEnd(string data)
        {
            var newNode = new DoubleFacedNode(data);

            // If there are no elements yet in the linked list:
            if (FirstNode == null)
            {
                FirstNode = newNode;
                LastNode  = newNode;
            }
            else //If the linked list already has at least one node:
            {
                newNode.PreviousNode = LastNode;
                LastNode.NextNode    = newNode;
                LastNode             = newNode;
            }
        }
 public DoublyLinkedList(DoubleFacedNode firstNode = null, DoubleFacedNode lastNode = null) : base(firstNode)
 {
     LastNode = lastNode;
 }