public void InsertHead(DoubleNode <T> head) { if (head == null) { ThrowLinkedListException("头节点不能为空"); } _head = head; _head.Prev = null; }
public DoubleLinkedList(DoubleNode <T> head) { if (head == null) { ThrowLinkedListException("头节点不能为空"); } _head = head; _head.Prev = null; _head.Next = null; }
public bool InsertValidation(DoubleNode <T> node, DoubleNode <T> newNode) { if (node == null) { ThrowLinkedListException("前置节点不能为空"); return(false); } if (newNode == null) { ThrowLinkedListException("插入的节点不能为空"); return(false); } return(true); }
public void InsertBefore(DoubleNode <T> node, DoubleNode <T> newNode) { if (!InsertValidation(node, newNode)) { return; } var tempNode = _head; while (tempNode != null && tempNode.Next != node) { tempNode = tempNode.Next; } newNode.Next = tempNode; newNode.Prev = tempNode.Prev; tempNode.Prev = newNode; }
public void InsertAfterIndex(int index, DoubleNode <T> newNode) { if (index < 0) { ThrowLinkedListException("index不能小于0"); return; } var tempNode = FindNodeByIndex(index); if (tempNode != null) { ThrowLinkedListException("当前index不能不存在数据元素"); return; } newNode.Next = tempNode.Next; newNode.Prev = tempNode; tempNode.Next = newNode; }
public void InsertAfter(DoubleNode <T> node, DoubleNode <T> newNode) { if (!InsertValidation(node, newNode)) { return; } var tempNode = _head; while (tempNode != null && tempNode.Next != node) { tempNode = tempNode.Next; } if (tempNode == null) { ThrowLinkedListException("找不到对应的前置节点"); return; } newNode.Next = tempNode.Next; newNode.Prev = tempNode; tempNode.Next = newNode; }
public DoubleNode(T data, DoubleNode <T> prev, DoubleNode <T> next) { _data = data; _prev = prev; _next = next; }
public DoubleLinkedList() { _head = null; }