/// <summary> /// Add value to list [O(n)]. /// </summary> /// <param name="value">The entered value.</param> public void Insert(int value) { if (start == null) { start = new UnrolledLinkedListNode(sizeNode); start.Set(0, value); end = start; return; } if (end.Count + 1 < sizeNode) { end.Set(end.Count, value); } else { var pointer = new UnrolledLinkedListNode(sizeNode); var j = 0; for (var pos = end.Count / 2 + 1; pos < end.Count; pos++) { pointer.Set(j++, end.Get(pos)); } pointer.Set(j++, value); pointer.Count = j; end.Count = end.Count / 2 + 1; end.Next = pointer; end = pointer; } }
/// <summary> /// Help method. Get all list inside to check the state. /// </summary> /// <returns>Items from all nodes.</returns> public IEnumerable <int> GetRolledItems() { UnrolledLinkedListNode pointer = start; List <int> result = new(); while (pointer != null) { for (var i = 0; i < pointer.Count; i++) { result.Add(pointer.Get(i)); } pointer = pointer.Next; } return(result); }