public void AddArrayAtTheBeggining(int[] a) { L2Node tmp; L2Node q = root; if (Lenght == 0) { //end = new L2Node(a[]); нужно end присваивать????????? for (int i = a.Length - 2; i >= 0; i--) { root = new L2Node(a[i]); tmp = root; tmp.Next = q; q = root; } Lenght = a.Length; } else { for (int i = a.Length - 1; i >= 0; i--) { root.Previous = new L2Node(a[i]); root.Previous.Next = root; root = root.Previous; } Lenght = Lenght + a.Length; } }
public int ValueByIndex(int index) { int value; if (index <= Lenght / 2) { L2Node tmp = root; for (int i = 0; i < index; i++) { tmp = tmp.Next; } value = tmp.Value; } else { L2Node tmp = end; int i = Lenght - 1; while (i != index) { tmp = tmp.Previous; i--; } value = tmp.Value; } return(value); }
public void delByIndex(int delIndex) { if ((delIndex != 0) && (delIndex != Lenght - 1)) { L2Node tmp = root; for (int i = 0; i < delIndex - 1; i++) { tmp = tmp.Next; } tmp.Next = tmp.Next.Next; tmp.Next.Previous = tmp; Lenght--; } else if (delIndex == Lenght - 1) { DelTheLastEl(); } else { delTheFirstEl(); } }
public void delByValue(int a) { L2Node tmp = root; if (root.Value == a) { while (tmp.Next.Value == a) { tmp = tmp.Next; Lenght--; } root = tmp.Next; Lenght--; } while (tmp.Next != null) { if (tmp.Next.Value == a) { tmp.Next = tmp.Next.Next; Lenght--; } else { tmp = tmp.Next; } } }
public L2List(int[] a) { root = null; Lenght = 0; for (int i = 0; i < a.Length; i++) { AddAtTheEnd(a[i]); } }
public void AddArrayByIndex(int[] a, int index) { if (index == Lenght) { AddArrayAtTheEnd(a); } else if (index == 0) { AddArrayAtTheBeggining(a); } else { if (index <= Lenght / 2) { L2Node tmp = root; L2Node q; for (int i = 0; i < index - 1; i++) { tmp = tmp.Next; } q = tmp.Next; for (int i = 0; i < a.Length; i++) { tmp.Next = new L2Node(a[i]); tmp = tmp.Next; } tmp.Next = q; } else { L2Node tmp = end; //эта часть не работает L2Node q; int i = Lenght - 1; while (i != index) { tmp = tmp.Previous; i--; } q = tmp.Previous; for (int j = a.Length - 1; j >= 0; j--) { tmp.Previous = new L2Node(a[i]); tmp = tmp.Previous; } tmp.Previous = q; } Lenght = Lenght + a.Length; } }
public void AddAccordingToIndex(int index, int a) { if ((index != 0) && (index != Lenght)) { if (index <= Lenght / 2) { L2Node tmp = root; L2Node q; for (int i = 0; i < index - 1; i++) { tmp = tmp.Next; } q = tmp.Next; tmp.Next = new L2Node(a); tmp.Next.Next = q; tmp.Next.Previous = tmp; q.Previous = tmp.Next; } else { L2Node tmp = end; //эта часть не работает L2Node q; int i = Lenght - 1; while (i != index) { tmp = tmp.Previous; i--; } q = tmp.Previous; tmp.Previous = new L2Node(a); tmp.Previous.Previous = q; q.Next = tmp.Previous; tmp.Previous.Next = tmp; } Lenght++; } else if (index == 0) { AddAtTheBeggining(a); } else { AddAtTheEnd(a); } }
public void DelSeveralLastEl(int a) { L2Node tmp = end; int i = 1; while (i != a + 1) { tmp = tmp.Previous; i++; } tmp.Next = null; end = tmp; Lenght = Lenght - a; }
public void delSeveralFirstEl(int a) { L2Node tmp = root; int i = 1; while (i != a + 1) { tmp = tmp.Next; i++; } tmp.Previous = null; root = tmp; Lenght = Lenght - a; }
public void DelTheLastEl() { if (Lenght != 1) { end = end.Previous; end.Next = null; Lenght--; } else { root = null; Lenght--; } }
public int MinElement() { L2Node tmp = root; int min = tmp.Value; for (int i = 1; i <= Lenght; i++) { if (min > tmp.Value) { min = tmp.Value; } tmp = tmp.Next; } return(min); }
public int MaxElement() { L2Node tmp = root; int max = tmp.Value; for (int i = 1; i <= Lenght; i++) { if (max < tmp.Value) { max = tmp.Value; } tmp = tmp.Next; } return(max); }
public int IndexByValue(int a) { L2Node tmp = root; int Index = -1; //если нет элемента равного а вернет 0 for (int i = 0; i < Lenght - 1; i++) { if (tmp.Value == a) { Index = i; } tmp = tmp.Next; } return(Index); }
public void AddAtTheBeggining(int a) { if (Lenght == 0) { root = new L2Node(a); end = root; Lenght = 1; } else { root.Previous = new L2Node(a); root.Previous.Next = root; root = root.Previous; Lenght++; } }
public int[] ReturnArray() { int[] array = new int[Lenght]; if (Lenght != 0) { int i = 0; L2Node tmp = root; do { array[i] = tmp.Value; i++; tmp = tmp.Next; } while (tmp != null); } return(array); }
public void AddAtTheEnd(int a) { if (Lenght == 0) { root = new L2Node(a); end = root; Lenght = 1; } else { end.Next = new L2Node(a); end.Next.Previous = end; end = end.Next; Lenght++; } }
public void Reverse() { L2Node tmp = root; L2Node q = null; while (tmp != null) { q = tmp.Previous; tmp.Previous = tmp.Next; tmp.Next = q; tmp = tmp.Previous; } if (q != null) { root = q.Previous; //если 1 нода } }
public void delTheFirstEl() { if (Lenght != 1) { L2Node q; q = root.Next; root = null; root = q; Lenght--; } else { root = null; Lenght--; } }
public int MaxIndex() { L2Node tmp = root; int max = tmp.Value; int Index = 0; for (int i = 0; i < Lenght - 1; i++) { if (max < tmp.Value) { max = tmp.Value; Index = i; } tmp = tmp.Next; } return(Index); }
public void ChangeByIndex(int index, int a) { if (index <= Lenght / 2) { L2Node tmp = root; if (index != 0) { int i = 1; while (i != index) { tmp = tmp.Next; i++; } tmp.Next.Value = a; } else { tmp.Value = a; } } else { L2Node tmp = end; if (index != Lenght - 1) { int i = Lenght - 2; while (i != index) { tmp = tmp.Previous; i--; } tmp.Previous.Value = a; } else { tmp.Value = a; } } }
public int MinIndex() { L2Node tmp1 = root; int min1 = tmp1.Value; int Index1 = 0; L2Node tmp = end; int min2 = tmp.Value; int Index2 = Lenght - 1; for (int j = 0; j <= Lenght / 2; j++) { if (min1 > tmp1.Value) { min1 = tmp1.Value; Index1 = j; } tmp1 = tmp1.Next; } for (int j = Lenght - 1; j < Lenght / 2; j--) { if (min2 > tmp.Value) { min2 = tmp.Value; Index2 = j; } tmp = tmp.Previous; } if (min1 < min2) { return(Index1); } else { return(Index2); } //ne sravnivaetsya }
public void AddArrayAtTheEnd(int[] a) { if (a.Length != 0) { if (Lenght == 0) { root = new L2Node(a[0]); end = root; L2Node tmp = root; for (int i = 1; i < a.Length; i++) { tmp.Next = new L2Node(a[i]); tmp.Next.Previous = tmp; tmp = tmp.Next; } end = tmp; Lenght = a.Length; } else { L2Node tmp = root; while (tmp.Next != null) { tmp = tmp.Next; } for (int i = 0; i < a.Length; i++) { tmp.Next = new L2Node(a[i]); tmp.Next.Previous = tmp; tmp = tmp.Next; } Lenght += a.Length; } } }
public void delseveralElByIndex(int a, int delIndex) { if (delIndex == 0) { delSeveralFirstEl(a); } else if (delIndex == Lenght - 1) { DelSeveralLastEl(1); } else { L2Node tmp = root; int j = 0; for (int i = 0; i < delIndex - 1; i++) { tmp = tmp.Next; } while (j != a) { if (tmp.Next.Next == null) { end = tmp; } tmp.Next = tmp.Next.Next; //как сделать чтобы правильно проходил тест если удаляются элементы до конца tmp.Next.Previous = tmp; Lenght--; j++; } } }
public L2List(int a) { root = new L2Node(a); end = root; Lenght = 1; }
public L2Node(int value) { Value = value; Next = null; Previous = null; }
public L2List() { root = null; end = null; Lenght = 0; }