public void InsertAfter(DoubleLinkNode node, DoubleLinkNode newNode) { newNode.NextNode = node.NextNode; node.NextNode = newNode; newNode.PreviousNode = node; newNode.NextNode.PreviousNode = newNode; }
public DoubleLinkNode InsertLast(DoubleLinkNode newNode) { // Starting at the head to find the last node in the list DoubleLinkNode currentNode = this.m_Frist; var previousNode = this.m_Frist; while (currentNode != null) { previousNode = currentNode; currentNode = currentNode.NextNode; } if (previousNode == null) { this.InsertFirst(newNode); } else { // Current node is now pointing to the last node in the list previousNode.NextNode = newNode; newNode.PreviousNode = previousNode; newNode.NextNode = null; } return(newNode); }
public void InsertBefore(DoubleLinkNode node, DoubleLinkNode newNode) { var previousNode = node.PreviousNode; newNode.PreviousNode = previousNode; newNode.NextNode = node; previousNode.NextNode = newNode; node.PreviousNode = newNode; }
public void InsertFirst(DoubleLinkNode newNode) { if (this.m_Frist == null) { // This is the first node now this.m_Frist = newNode; } else { newNode.NextNode = this.m_Frist; this.m_Frist.PreviousNode = newNode; } }
public DoubleLinkNode GetLastNode() { DoubleLinkNode currentNode = this.m_Frist; DoubleLinkNode previousNode = this.m_Frist; while (currentNode != null) { previousNode = currentNode; currentNode = currentNode.NextNode; } return(previousNode); }
public DoubleLinkedList DeepCopy() { var newList = new DoubleLinkedList(); DoubleLinkNode currentNode = this.m_Frist; var newNode = currentNode.CopyNode(); newList.Insert(newNode); currentNode = currentNode.NextNode; while (currentNode != null) { newNode = currentNode.CopyNode(); newList.Insert(newNode); currentNode = currentNode.NextNode; } currentNode = this.GetLastNode(); return(newList); }
public DoubleLinkNode Insert(DoubleLinkNode newNode) { return(this.InsertLast(newNode)); }