public object RemoveAtIndex(int index) { IndexedLink findResult = FindAtIndex(index); object result = findResult.Value; RemoveLink(findResult); return(result); }
public Link InsertAtIndex(int index, object value) { if (index == 0) { return(InsertHead(value)); } if (index == Count) { return(InsertTail(value)); } IndexedLink findResult = FindAtIndex(index); Link result = InsertAfter(findResult.RingLink.Previous, value); if (index == 0) { Head = findResult.RingLink.Previous; } return(result); }
public void InsertRangeAtIndex(int index, IEnumerable values) { if (index == Count) { foreach (object value in values) { InsertTail(value); } return; } IndexedLink findResult = FindAtIndex(index); Link tail = (index == 0) ? Head.Previous : null; Link link = findResult.RingLink.Previous; foreach (object value in values) { link = InsertAfter(link, value); } if (tail != null) { Head = tail.Next; } }