public static int FindElement(PointUniList beg, int findNumber, PointUniList p = null, int index = 0) { if (beg == null) { Console.WriteLine("Искать нечего: список пуст"); return(-1); } if (p == null) { if (index == 0) { p = beg; } else { return(-1); } } if (p.data == findNumber) { return(p.data); } return(FindElement(beg, findNumber, p.next, ++index)); }
public static PointUniList DelElement(PointUniList beg, int number, PointUniList p = null, int index = 0) { if (beg == null) { Console.WriteLine("Удалять нечего: список пуст"); return(beg); } if (number == 1) { beg = beg.next; return(beg); } if (p == null) { if (index == 0) { p = beg; } else { return(beg); } } if (p.next?.data == number) { p.next = p.next.next; return(beg); } return(DelElement(beg, number, p.next, ++index)); }
// Добавление в начало однонаправленного списка public static PointUniList MakeList(int N, PointUniList beg = null) { // Создаем элемент и добавляем в начало списка PointUniList p = MakePoint(N); p.next = beg; beg = p; if (N <= 1) { return(beg); } return(MakeList(--N, beg)); }
public static void Print(PointUniList beg) { // Проверка наличия элементов в списке if (beg == null) { Console.WriteLine("Список пустой"); return; } PointUniList p = beg; Console.WriteLine("Список:"); while (p != null) { Console.WriteLine(p.ToString()); // Переход к следующему элементу p = p.next; } }
static void Main(string[] args) { Console.WriteLine("Введите кол-во элементов списка:"); int N = InputInt(1, 100); PointUniList list = PointUniList.MakeList(N); PointUniList.Print(list); Console.WriteLine("Введите элемент для удаления:"); int numForDel = InputInt(1, 100); list = PointUniList.DelElement(list, numForDel); PointUniList.Print(list); Console.WriteLine("Введите элемент для поиска:"); int numForFind = InputInt(1, 100); int element = PointUniList.FindElement(list, numForFind); Console.WriteLine(element == -1 ? "Элемент не найден" : "Найденный элемент: " + element); Console.ReadLine(); }
// Создание элемента списка static PointUniList MakePoint(int N) { PointUniList p = new PointUniList(N); return(p); }
// Конструктор с параметром public PointUniList(int N) { data = N; next = null; }