public BinList Remove(int number)//Удаление элемента списка с указанным информационным полем { BinList temp = this; do { if (temp.Data == number) { if (temp.Prev == null && temp.Next == null) { return(null); } if (temp.Prev == null) { temp = temp.next; temp.Prev = null; return(temp); } if (temp.Next == null) { temp.Prev.Next = null; return(this); } temp.Prev.Next = temp.Next; temp.Next.Prev = temp.Prev; return(this); } temp = temp.Next; }while (temp != null); Console.WriteLine("В списке нет элементов с таким информационным полем"); return(this); }
public static void ShowList(BinList beg) { if (beg == null) { Console.WriteLine("Список пуст"); return; } BinList p = beg; while (p != null) { Console.Write(p + " "); p = p.next; } Console.WriteLine(); }//Показать список
public void Search(int number)//Поиск элемента списка с указанным информационным полем { int count = 1; BinList temp = this; do { if (temp.Data == number) { Console.WriteLine("Информационнон поле {0} имеет элемент номер {1}", number, count); return; } temp = temp.Next; count++; }while (temp != null); Console.WriteLine("В списке нет элементов с таким информационным полем"); }
public static BinList Create(int size)//Создание списка добавлением элементов в конец списка { int info = 1; BinList beg = new BinList(info); BinList temp = beg; for (int i = 1; i < size; i++) { info++; BinList NewElem = new BinList(info); temp.Next = NewElem; NewElem.Prev = temp; temp = NewElem; } return(beg); }
static void Menu()//Меню задачи { Console.WriteLine("Выберите действие:\n1. Создать новый двунаправленный список\n2. Найти элемент списка\n3. Удалить элемент списка\n4. Выход из программы"); int i = VvodProverka(1, 4); switch (i) { case 1: { Console.Clear(); Console.WriteLine("Введите число N"); N = VvodProverka(1); Beg = BinList.Create(N); Console.Clear(); BinList.ShowList(Beg); Console.WriteLine(); Menu(); } break; case 2: { Console.Clear(); if (Beg == null) { BinList.ShowList(Beg); Console.WriteLine(); Menu(); } else { BinList.ShowList(Beg); Console.WriteLine(); Console.WriteLine("Введите информационное поле искомого элемента"); int info = VvodProverka(1, N); Beg.Search(info); BinList.ShowList(Beg); Console.WriteLine(); Menu(); } } break; case 3: { Console.Clear(); if (Beg == null) { BinList.ShowList(Beg); Console.WriteLine(); Menu(); } else { BinList.ShowList(Beg); Console.WriteLine(); Console.WriteLine("Введите информационное поле удаляемого элемента"); int info = VvodProverka(1, N); Beg = Beg.Remove(info); BinList.ShowList(Beg); Console.WriteLine(); Menu(); } } break; case 4: Environment.Exit(0); break; } }
public BinList(int d)//Создание элемента списка { data = d; next = null; prev = null; }
}//свойство prev public BinList()//Создание пустого элемента списка { data = 0; next = null; prev = null; }