Beispiel #1
0
 public DoublyLLNode InsertAtHead(int val)
 {
     if (head != null)
     {
         var nodeToAdd = new DoublyLLNode(val);
         nodeToAdd.Next = head;
         head.Prev      = nodeToAdd;
         head           = nodeToAdd;
         return(head);
     }
     head = new DoublyLLNode(val);
     return(head);
 }
Beispiel #2
0
        public void RemoveNode(DoublyLLNode node)
        {
            if (head != null && head != node)
            {
                var prev = node.Prev;
                var next = node.Next;
                if (prev != null)
                {
                    prev.Next = next;
                }
                if (next != null)
                {
                    next.Prev = prev;
                }

                node.Prev = null;
                node.Next = null;
                return;
            }
            head = null;
            return;
        }
Beispiel #3
0
        public void UpgradeToHead(DoublyLLNode node)
        {
            if (head != null && head != node)
            {
                var prev = node.Prev;
                var next = node.Next;
                if (prev != null)
                {
                    prev.Next = next;
                }
                if (next != null)
                {
                    next.Prev = prev;
                }

                node.Prev = head.Prev;
                node.Next = head;
                head.Prev = node;
                head      = node;
                return;
            }
            head = node;
            return;
        }
Beispiel #4
0
 public DoublyLLNode(int val, DoublyLLNode prev = null, DoublyLLNode next = null)
 {
     Data = val;
     Prev = prev;
     Next = next;
 }