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); }
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; }
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; }
public DoublyLLNode(int val, DoublyLLNode prev = null, DoublyLLNode next = null) { Data = val; Prev = prev; Next = next; }