public ListElm <T> ElementAt(int index) { ListElm <T> currElm = Head; int position = 0; if (index < 0 || index >= Count) { throw new IndexOutOfRangeException(); } else { while (currElm != null) { if (position == index) { return(currElm); } currElm = currElm.NxtElm; position++; } } return(null); }
public void Remove(T value) { ListElm <T> currElm = Head; while (currElm != null) { if (currElm.Value.CompareTo(value) == 0) { if (currElm.PrvElm != null) { Console.WriteLine("set a new neibourgh(next element of the current) for the previous element" + " of the current element"); currElm.PrvElm.NxtElm = currElm.NxtElm; } else { Head = currElm.NxtElm; } if (currElm.NxtElm != null) { currElm.NxtElm.PrvElm = currElm.PrvElm; Console.WriteLine("set a new neibourgh(previous element of the current) for the next element" + " of the current element"); } currElm = null; Count--; break; } currElm = currElm.NxtElm; } }
public T[] ToArray() { T[] arr = new T[Count]; ListElm <T> current = Head; for (int i = 0; i < Count; i++) { arr[i] = current.Value; current = current.NxtElm; } return(arr); }
public void InsertAt(T insertValue, int index) { if (index > Count || index < 0) { throw new IndexOutOfRangeException(); } else if (index == Count) { this.AddLast(insertValue); } else { int position = 0; ListElm <T> injectElm = new ListElm <T>(insertValue); ListElm <T> currElm = Head; while (currElm != null) { if (position == index) { injectElm.PrvElm = currElm.PrvElm; injectElm.NxtElm = currElm; if (currElm.PrvElm != null) { currElm.PrvElm.NxtElm = injectElm; } else { Head = injectElm; } currElm.PrvElm = injectElm; Count++; break; } else { currElm = currElm.NxtElm; position++; } } } }
public ListElm <T> Find(T value) { ListElm <T> current = Head; while (current != null) { if (current.Value.CompareTo(value) == 0) { return(current); } current = current.NxtElm; } return(null); }
public void AddLast(T value) { if (Tail == null) { Head = new ListElm <T>(value); Tail = Head; } else { Tail.NxtElm = new ListElm <T>(value); Tail.NxtElm.PrvElm = Tail; Tail = Tail.NxtElm; } Count++; }
public void AddFirst(T value) { if (Head == null) { Tail = new ListElm <T>(value); Head = Tail; } else { Head.PrvElm = new ListElm <T>(value); Head.PrvElm.NxtElm = Head; Head = Head.PrvElm; } Count++; }